当您在客户端禁用网络连接时,CSocket 不会收到 OnClose 或 OnReceive

发布于 2024-08-14 07:36:09 字数 275 浏览 8 评论 0原文

我使用 C++ CSocket 创建了一个客户端服务器应用程序。当我将客户端连接到服务器,然后使用普通 X 按钮关闭客户端或使用 taskmanager 结束任务时,服务器 CSocket 会收到 OnClose 事件。问题是当我在客户端运行的 Windows 上禁用互联网连接时,服务器 CSocket 不会收到 OnClose 或 OnReceive 事件!

有人可能知道发生了什么事吗?

更新:我刚刚测试并发现客户端也没有收到 OnClose!我在运行客户端的 Windows 上禁用了互联网连接!

I've created a client server application with c++ CSocket. when I connect the client to the server and after that I close the client with normal X button or end task it with taskmanager , server CSocket receives the OnClose event. The problem is when I disable the internet connection on windows that the client is running on, server CSocket doesn't receive the OnClose nor OnReceive event!

Is anyone possibly know what's going on?

Update: I've just tested and saw that client didn't recieve the OnClose too! I disabled the internet connection on the windows that the client is running on!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(1

寂寞美少年 2024-08-21 07:36:09

客户端关闭后无法通过 FIN 或 RST 关闭与服务器的连接。为了让服务器检测到客户端已死亡,它必须有数据要发送(这会失败)或者必须发送定期的 TCP keepalive 探测。 TCP_KEEPALIVE 可以设置为套接字选项。

The client side is shutdown without being able to close the connection to the server via a FIN or RST. For the server to detect that the client is dead it must either have data to send (which would fail) or must send periodic TCP keepalive probes. TCP_KEEPALIVE can be set as a socket option.

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