linux - 如果 TCP 服务器脱离网络,接受函数是否返回错误 (-1)

标签 linux sockets tcp

如果它所连接的以太网接口(interface)脱离网络,accept 函数是否返回错误(-1)?如果不是,应用程序(TCP 服务器)将如何知道它的接口(interface)不再处于事件状态??

我正在使用一个线程来接受连接,而不是使用任何“select”语句来这样做。直接调用 accept() 函数,但如果我从以太网接口(interface)中删除 IP 地址,它不会以某种方式重新调整错误。

使用C,工作环境为linux。

最佳答案

通常您不会将您的服务器套接字绑定(bind)到特定的 IP 地址(您使用 INADDR_ANY)。因此,即使您删除了您的以太网 IP 地址,您仍然可以使用环回接口(interface)联系您的服务器。或者其他带有 IP 地址的接口(interface)。

如果您想确保您的服务器可以从网络访问,检查接口(interface)状态对您没有多大帮助。它只是通过网络的长路径上的单跳。您需要在其他地方使用测试客户端来检查服务器的可达性。

关于linux - 如果 TCP 服务器脱离网络,接受函数是否返回错误 (-1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9075735/

相关文章:

linux - awk 比较匹配项并将其附加到另一个文件中

ssl - Nginx中的负载平衡-TCP,SSL,HTTPS

c++ - Keepalive 时间 - 在 C++ 中不能减少到一分钟以下

c - 写入套接字退出程序

javascript - 如何浏览器需要 ('net' ).Socket?

javascript - 带有 JavaScript TCP 客户端的浏览器

进程中的 C# 管道 Linux 命令输出

linux - 如何在 linux shell 中进行求和

linux - Ubuntu iNotify 多文件夹

Java Tcp Socket 管理数据包重传