Windows
套接字可選項和I/O緩衝大小
實際中我們需要根據特性對套接字進行更改(例如 廣播特性),之前我們的程序都是通過默認的套接字特性進行數據通信。
//Windows
#include<winsock2.h>
int getsockopt(SOCKET sock,int level ,int optname, char* optval,int *optlen);
//用於讀取套接字可選項
int setsockopt(SOCKET sock,int level ,int optname, const char* optval,int *optlen);
//更改可選項
代碼:
Time-wait狀態
服務器端和客戶端都可能會進入Time-wait狀態,但是因爲客戶端每次運行都會動態分配端口號,所以無需過多關注。
Nagle算法
應用於TCP層,TCP套接字默認使用Nagle算法交換數據,最大限度的進行緩衝,知道收到ACK。
Nagle減少數據包數量,但加大數據包的大小。
在大文件數據傳輸,要禁用Nagel算法:
int opt_val = 1; setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (void*)&opt_val, sizeof(opt_val));