基於UDP的單執行緒網路點對點資料報收發測試程式

2021-07-09 10:30:17 字數 1413 閱讀 4775

分享一段基於udp的單執行緒網路點對點資料報收發測試程式。這段程式我是用來測試使用recvmmsg()與sendmmsg()後的丟包率(這兩個函式的資訊可以man出來),使用g++編譯,程式中可能有不足的地方還望指出。

檔案一:wrap.h

#ifndef _wrap_h_

#define _wrap_h

#ifndef __use_gnu

#define __use_gnu

#endif

#include #include #include #include #include #include #include #include #include #define datnum 100

#endif

檔案二:server.c

/* server.c */

#include "wrap.h"

#define serv_port 8000

int main(void)

n = recvmmsg(sockfd, msgvec, datnum, 0, timeout);

if (n == -1)

else

}}

檔案三: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;

}

基於WinSocket的單執行緒Server的實現

基於 winsocket 的單執行緒 server 的實現 功能描述 程式實現乙個server監聽埠的功能,執行後,其處於監聽狀態。當有client連線到此server,它停止監聽,接收到自此client的資料,並將從client收到資料反射給client。呼叫順序 1.wsastartup 開始對...

python單執行緒網路爬蟲

源程式 以網為例 coding utf8 importrequests importre importsys reload sys sys.setdefaultencoding gb18030 type sys.getfilesystemencoding html requests.get html...

redis的單執行緒

1 完全基於記憶體,絕大部分請求是純粹的記憶體操作,非常快速。資料存在記憶體中,類似於hashmap,hashmap的優勢就是查詢和操作的時間複雜度都是o 1 2 資料結構簡單,對資料操作也簡單,redis中的資料結構是專門進行設計的 3 採用單執行緒,避免了不必要的上下文切換和競爭條件,也不存在多...