使用setsockopt函数
int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);
-
sockfd:标识一个套接口的描述字
-
level:选项定义的层次;支持SOL_SOCKET、IPPROTO_TCP、IPPROTO_IP和IPPROTO_IPV6
-
optname:需设置的选项,而有部分选项需在listen/connect调用前设置才有效
-
optval:指针,指向存放选项值的缓冲区
-
optlen:optval缓冲区长度
注意这里使用的optname是SO_REUSEADDR
具体使用如下
//调高端口的重用性
int on;
if (setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(int)) << 0) {
perror("setsockopt error\n");
return 0;
}
if (bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1) {
perror("bind error:");
}
网友评论