getsockopt()函数用于获取套接字选项的值。
函数原型为:
int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);
参数说明:
-
sockfd:套接字文件描述符。
-
level:选项所在的协议层,常用的有
SOL_SOCKET
和IPPROTO_TCP
等。 -
optname:选项名称,可以是套接字选项常量,如
SO_KEEPALIVE
、SO_RCVBUF
等。 -
optval:指向用于接收选项值的缓冲区。
-
optlen:指向一个整数,表示optval缓冲区的长度。调用时,它指向的值应该是optval缓冲区的大小,返回时它将被设置为实际接收到的选项值的长度。
示例代码:
#include#include #include #include #include #include int main() { int sockfd, optval; socklen_t optlen; // 创建套接字 sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd == -1) { perror("socket"); exit(1); } // 获取TCP_NODELAY选项的值 optlen = sizeof(optval); if (getsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, &optval, &optlen) == -1) { perror("getsockopt"); exit(1); } printf("TCP_NODELAY option value: %d\n", optval); // 关闭套接字 close(sockfd); return 0; }
该示例代码创建了一个套接字,并使用getsockopt()函数获取了TCP_NODELAY选项的值。注意,需要包含头文件
才能使用TCP选项。