分享一段基於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 採用單執行緒,避免了不必要的上下文切換和競爭條件,也不存在多...