【发布时间】:2014-07-31 03:27:25
【问题描述】:
我有 Tcp 服务器。我使用linux c apisocket(),bind(),listen(),select(),accept()等待客户端连接。
当我拔插网线时,select没有错误返回,可以正常等待客户端连接等等。
当我改变我的IP地址时使用
ifconfig eth0 xxx.xxx.xxx.xx netmask 255.255.255.0
(在同一段),选择没有错误返回,然后客户端使用这个新的ip连接我的服务器,它也成功
我应该什么时候重新启动我的服务器?
ps:bind() 是使用INADDR_ANY
【问题讨论】:
-
根据你自己的观察,从来没有。
-
你的期望是什么?
-
@Nilesh 我想知道socket fd什么时候失效,然后我应该重启服务器。但是现在不知道socket fd什么时候失效了,测试一些情况,发现socket fd一直是有效的。我无法确认套接字 fd 始终有效
-
一个监听套接字FD只有在你关闭它时才会失效。你肯定知道你什么时候做的吗?
-
也就是说,拔出电缆对listening 插座没有影响,只会对connected 插座产生影响。您不需要重新启动侦听套接字,除非您将其绑定到特定接口的 IP 并且该接口 IP 发生更改。这种情况下,你需要监控你绑定的接口,socket不会帮你做的。