如果 TCP 服务器脱离网络,accept 函数是否返回错误(-1)
如果它所连接的以太网接口脱离网络,accept 函数是否返回错误(-1)?如果不是,应用程序(TCP 服务器)如何知道其接口不再处于活动状态?
我正在使用一个线程来接受连接,并且不使用任何“select”语句来执行此操作。直接调用accept()函数,但不知何故,如果我从以太网接口中删除IP地址,它不会重新调整错误。
使用C语言,工作环境是linux。
Does the accept function returns error(-1) if the Ethernet interface it is attached goes out of network?if not how does the application(TCP server) will know that its interface is not active any more ??
I am using one thread for accepting the connection and not using any "select" statement for doing so.Directly calling accept() function but somehow it is not retuning error if I remove the IP address from Ethernet interface.
using C and working environment is linux.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
通常,您不会将服务器套接字绑定到特定的 IP 地址(您使用 INADDR_ANY)。因此,即使您删除了以太网 IP 地址,您仍然可以使用环回接口联系您的服务器。或者其他带有 IP 地址的接口。
如果您想确保可以从网络访问您的服务器,检查接口状态并没有多大帮助。它只是网络长路径上的一跳。您需要在其他地方有一个测试客户端来检查服务器的可达性。
Usually you don't bind your server socket to a specific IP address (you use INADDR_ANY). So even if you remove your ethernet IP address, you could still contact your server using the loopback interface. Or some other interface with an IP address.
If you want to make sure that your server is reachable from the net, checking the interface status does not get you much. It's just a single hop on a long path through the network. You'd need a testing client somewhere else to check the reachability of your server.