setsockopt
是一个在 socket 编程中使用的函数,它可以设置套接字选项。它的原型如下:
int setsockopt(int sockfd, int level, int optname,
const void *optval, socklen_t optlen);
其中,参数 sockfd
是指定要操作的套接字描述符,level
是指定操作层次,一般用于设置协议相关的选项。optname
是指定要设置的选项名,optval
是指定要设置的值,optlen
是指定 optval
参数的长度。
在 level
参数中,使用 SOL_SOCKET
作为参数可以设置基本的套接字选项,而对于 TCP 选项,使用 IPPROTO_TCP
作为参数。
其中一个使用的选项为TCP_INFO
, 这是一种查询tcp协议的选项,能获徖当前的tcp的相关状态信息, 可以获取连接的详细信息包括连接状态,rtx 等。
使用方式为
struct tcp_infoinfo;
socklen_t len = sizeof(info);
getsockopt(sockfd, SOL_TCP, TCP_INFO, &info, &len);
但是需要注意的是,可能并不是所有的系统都支持 TCP_INFO 选项。