插座连接稳定性

本文关键字:稳定性 连接 插座 | 更新日期: 2023-09-27 18:26:03

我有一个用C#编写的异步套接字服务器。我的用户经常抱怨他们在没有任何理由的情况下与断开了连接。用户计算机上的其他互联网应用程序(MSN、SKYPE等)似乎连接良好,因此它们的互联网连接似乎没有问题。有人能提供一些关于如何使客户端和服务器之间的连接坚如磐石(我的意思是防止频繁断开连接)或在哪里可以查找断开连接问题的信息吗?

插座连接稳定性

在多台计算机之间共享ISP分配的IP地址的网络地址转换器(也称为"家庭路由器"、"无线网关"等)可能在这里发挥作用。NAT保存一个活动连接表(有时称为"端口映射表"),用于跟踪如何为活动TCP连接和观察到的UDP会话转换ip:port对。已知有一些品牌的路由器,如果在一段时间内没有观察到TCP连接上的任何流量,就会清除内存中的端口映射。MSN Messenger和Skype等应用程序通过定期在客户端、服务器和其他持久连接之间发送"保持活动"来缓解这种情况。这些信息是双向的。

您没有提供太多信息,所以NAT问题只是众多可能性中的一种。

诊断连接故障的最佳方法是大量投资于记录网络消息(在客户端和服务器上)、套接字事件以及套接字API的所有返回值。这样,如果客户报告了问题,他可以向您发送日志,希望您可以获取相应的服务器日志进行比较。然后,您可以诊断断开连接的来源和/或重置连接的套接字错误。您的代码中很可能有什么东西触发了断开连接。

我想您在这里谈论的是TCP。应用程序的客户端使用的套接字库与他们连接Skype或MSN时使用的套接字基本相同。通常断开连接的原因是其中一方关闭了套接字(例如,在连接空闲一段时间后)。检查代码中关闭连接的位置。