【问题标题】:when the socket invalid当套接字无效时
【发布时间】: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不会帮你做的。

标签: c linux sockets


【解决方案1】:

监听套接字在关闭之前保持有效。只要绑定到INADDR_ANY,,任何人都可以连接到它。

但是,如果您将其绑定到特定 IP 地址并且该 IP 地址消失了,则没有人能够连接到套接字:但是套接字本身仍然有效,并且不会报告任何会导致您得出结论的错误情况否则。解决方法:不要。

【讨论】:

  • 这个,这个答案就是我想知道的,谢谢
猜你喜欢
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多