套接字具有多种特性,这些特性可以更改。
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);
- sock:套接字句柄
- level:协议层,常见有
SOL_SOCKET、IPPROTO_IP、IPPROTO_TCP- optname:可选项名,详见
表1- optval:指向可选项信息的缓冲区
- optlen:可选项信息缓冲区大小
表1:套接字重点可选项名
| 协议层 | 选项名 | 描述 |
|---|---|---|
| SOL_SOCKET | SO_SNDBUF | 输出缓冲区大小 |
| SO_RCVBUF | 输入缓冲区大小 | |
| SO_REUSEADDR | 默认为0,设置为1后可将Time-wait状态下的套接字端口号重新分配给新的套接字 | |
| IPPROTO_TCP | TCP_NODELAY | 默认为0,设置为1后禁止Nagle算法 |
Nagle 算法使能时,只有收到前一数据的 ACK 标志后,Nagle 算法才发送下一数据。