socket端添加地址复用

来源:互联网 发布:js自定义函数 编辑:程序博客网 时间:2024/06/05 18:48

传智扫地僧课程学习笔记。


实验1,

运行之前的服务器程序后,

再运行一个,

会提示: Address already in use,意即端口被占用,这个没什么好说的,



实验2,

运行服务器程序,运行客户端程序,

然后结束服务器程序,

注意了啊,这时候你再开启服务器程序,会提示和上面一样的错误,

这时候你用 netstat  -na | grep 8001,

这时候,仍然有信息回来,

如下,


结论就是,处于类似的状态你,你再次启动服务器程序,无法启动,

所以有这样一个技术,

setsockopt,在bind之前调用,

之后你再启动服务器程序,就不会提示错误了,

不过这时候估计是因为之前的连接已经断了,所以你继续从客户端发信息,会没有回应,

这时候你重新启动客户端,就又像之前一样正常收发数据了,

int optval = 1;if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval))< 0){perror("setsockopt bind\n");exit(0);}if( bind( sockfd, (struct sockaddr *)&srvaddr, sizeof( srvaddr)) <0){perror("socket\n");exit( 0);}



0 0
原创粉丝点击