套接字 SO_REUSEADDR

来源:互联网 发布:光钎网络监控安装教程 编辑:程序博客网 时间:2024/04/30 04:59

引用自百度百科http://baike.baidu.com/view/7994791.htm


设置套接字选项为SO_REUSEADDR,socket可重用,经常在socket通信时进行设置

  //设置套接字选项为SO_REUSEADDR,即socket可重用
  opt=SO_REUSEADDR;
  setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));
  :编写 TCP/SOCK_STREAM 服务程序时,SO_REUSEADDR到底什么意思?
  A: 这个套接字选项通知内核,如果端口忙,但TCP状态位于 TIME_WAIT ,可以重用端口。如果端口忙,而TCP状态位于其他状态,重用端口时依旧得到一个错误信息,指明"地址已经使用中"。如果你的服务程序停止后想立即重启,而新套接字依旧使用同一端口,此时 SO_REUSEADDR 选项非常有用。必须意识到,此时任何非期望数据到达,都可能导致服务程序反应混乱,不过这只是一种可能,事实上很不可能。
  一个套接字由相关五元组构成,协议、本地地址、本地端口、远程地址、远程端口。SO_REUSEADDR 仅仅表示可以重用本地本地地址、本地端口,整个相关五元组还是唯一确定的。所以,重启后的服务程序有可能收到非期望数据。必须慎重使用 SO_REUSEADDR 选项。
原创粉丝点击