套接字连接错误

时间:2010-01-12 07:29:28

标签: c# .net sockets

我在.net windows应用程序中遇到了一个奇怪的套接字连接问题。我正在使用来自.net的套接字与异步通信系统间缓存数据库进行通信。

我有一个特定的超时值应用程序,当超时发生时,提示用户保持与应用程序的连接。当我说保持连接时,套接字没有被重置。
我将超时设置为30分钟并说保持连接第一个空闲时间。然后当我浏览应用程序时它工作正常。 如果没有在应用程序中导航并说第二次保持连接,并在应用程序中导航我收到套接字“主机拒绝”连接错误。我可以假设套接字可能被终止。

但是,如果我将应用程序超时设置为10分钟,那么我第二次得到套接字错误。当我检查套接字连接属性时,它仍然是真的。当我调用套接字发送方法时,我没有捕获异常。但是数据没有从套接字传递。我检查了另一个.net代码。没事。这个问题也很少发生,只有十分之一。任何建议都会有很大帮助。

1 个答案:

答案 0 :(得分:2)

这听起来像防火墙或其他TCP设置导致的典型问题 如果连接空闲时间超过x秒,防火墙可能会静默断开连接 由于TCP协议在这种情况下不会生成事件(类似于仅删除网络电缆),因此强烈建议每隔x秒发送一次ping消息,以便防火墙保持打开状态并确保可以连接。如果错过ping,服务器将断开客户端的连接。