《TCP/IP網絡編程》第9章 筆記&代碼&註釋

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);
//更改可選項

代碼:

https://github.com/ChristmasError/TCP-IP-Network-programming/tree/master/%E7%AC%AC%E4%B9%9D%E7%AB%A0%20%E5%A5%97%E6%8E%A5%E5%AD%97%E7%9A%84%E5%A4%9A%E7%A7%8D%E5%8F%AF%E9%80%89%E9%A1%B9/Windows%E7%9A%84%E5%AE%9E%E7%8E%B0

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));

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章