获取和设置套接字选项的函数:
#include <sys/socket.h>
int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);
int setsockopt(int sockfd, int level, int optname, void *optval, socklen_t optlen);
/*
* 均返回:若成功则为0,若出错则为-1
* sockfd --- 套接字描述符
* level --- 级别,指定系统中解释选项的代码(通用套接字代码、某个特定于协议的代码:IPv4,IPv6,TCP,SCTP)
* optname --- 选项名
* optval --- getsockopt把已获得的选项当前值存放到*optval中;setsockopt从*optval中取得选项待设置的新值
*/
1. 通用套接字选项
通用套接字选项是协议无关的。
| optname | 解释 | 说明 |
|---|---|---|
| SO_KEEPALIVE | 保持存活选项 | 周期性测试连接是否仍存活。 |
| SO_RCVBUF | 接收缓冲区 | 用来保存接收到的数据,直到应用程序读取 |
| SO_SNDBUF | 发送缓冲区 | |
| SO_REUSEADDR | 允许重用本地地址 | 允许启动一个监听服务器并bind其众所周知端口,即使以前建立的将该端口用作他们的本地端口的连接仍存在。 |
| SO_REUSEPORT | 允许重用本地端口 | 允许在同一端口上启动同一服务器的多个实例,是要每隔实例bind一个不同的本地IP地址即可。 |
2. TCP套接字选项
TCP_NODELAY套接字选项:开启本选项将禁止TCP的Nagle算法。
Nagle算法目的在于防止连接在任何时刻有多个小分组待确认。
本文介绍了获取和设置套接字选项的函数getsockopt和setsockopt,并详细解释了这些函数的作用及参数含义。此外,还列举了多种通用套接字选项如SO_KEEPALIVE、SO_RCVBUF等以及TCP套接字选项TCP_NODELAY的功能。
439

被折叠的 条评论
为什么被折叠?



