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

发布于 2024-12-29 20:16:34 字数 202 浏览 1 评论 0原文

如果它所连接的以太网接口脱离网络,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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

☆獨立☆ 2025-01-05 20:16:34

通常,您不会将服务器套接字绑定到特定的 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文