现在的位置: 首页 > 综合 > 正文

套接字 SO_REUSEADDR

2013年10月10日 ⁄ 综合 ⁄ 共 581字 ⁄ 字号 评论关闭

引用自百度百科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 选项。

抱歉!评论已关闭.