這段程式同樣用來測試使用recvmmsg()與sendmmsg()後的丟包率,只不過這次用pthread_create()建立了4個執行緒,使用g++ client.c -o client -lpthread編譯。由於第一次用pthread_create()函式,不是很熟悉,程式中有不足的地方還望指出。
檔案一:wrap.h
#ifndef _wrap_h_
#define _wrap_h
#ifndef __use_gnu
#define __use_gnu
#endif
#include #include #include #include #include #include #include #include #include #include #define datnum 100
#endif
檔案二:server.c
/* server.c */
#include "wrap.h"
#define serv_port 8000
#define num_threads 4 // 建立的執行緒數
unsigned long b = 0, a = 0;
void *recv_dat(void *args) // 執行緒處理函式
n = recvmmsg(sockfd, msgvec, datnum, 0, timeout);
if (n == -1)
else
}}int main(void)
}sleep(5); // 67~70行好像沒什麼用,因為程式來不到這裡
for(t = 0; t < num_threads; t++)
pthread_join(thread[t], null);
return exit_success;
}
檔案三:client.c
/* client.c */
#include "wrap.h"
#define serv_port 8000
int main(int argc, char *argv)
sockfd = socket(af_inet, sock_dgram, 0);
if (sockfd < 0)
bzero(&servaddr, sizeof(struct sockaddr_in));
bzero(msgvec, sizeof(msgvec));
bzero(dataiov, sizeof(dataiov));
servaddr.sin_family = af_inet;
inet_pton(af_inet, "127.0.0.1", &servaddr.sin_addr);
servaddr.sin_port = htons(serv_port);
for (i = 0, a = 0; i < atoi(argv[1]); i++)
n = sendmmsg(sockfd, msgvec, datnum, 0);
if (n == -1)
else a++;
// usleep(1);
}printf("send_num = %d\n", a);
return 0;
}
基於UDP的單執行緒網路點對點資料報收發測試程式
分享一段基於udp的單執行緒網路點對點資料報收發測試程式。這段程式我是用來測試使用recvmmsg 與sendmmsg 後的丟包率 這兩個函式的資訊可以man出來 使用g 編譯,程式中可能有不足的地方還望指出。檔案一 wrap.h ifndef wrap h define wrap h ifndef...
基於UDP的多執行緒網路通訊程式
分享一段基於udp的多執行緒網路點對點通訊程式。檔案一 ccomm.h ifndef ccomm h define ccomm h include include include include define socklen t int pragma comment lib,wsock32.lib ...
python 網路程式設計(udp資料報)
什麼是udp udp是乙個簡單的面向資料報的運輸層協議 程序的每個輸出操作都正好產生乙個udp資料報,並組裝成乙份待傳送的ip資料報。這與面向流字元的協議不同,如tcp,應用程式產生的全體資料與真正傳送的單個ip資料報可能沒有什麼聯絡。接收端是伺服器 server 傳送端是客戶機 client py...