c# - 套接字连接错误

标签 c# .net sockets

我在 .net windows 应用程序中遇到了一个奇怪的套接字连接问题。我正在使用来自 .net 的套接字与旧的系统间缓存数据库进行异步通信。我在应用程序中有一个特定的超时值,当超时发生时,会提示用户保持连接到应用程序。当我说保持连接时,套接字没有被重置。我将超时设置为 30 分钟,并说在第一次空闲时间保持连接。然后当我浏览应用程序时它工作正常。
如果没有在应用程序中导航并说第二次保持连接,然后在应用程序中导航,我会收到套接字“主机被拒绝”连接错误。我可以假设这可能是套接字已终止。但奇怪的是,如果我将应用程序超时设置为 10 分钟,那么我也会第二次收到套接字错误。当我检查套接字连接属性时,它仍然是正确的。当我调用套接字发送方法时,我没有发现异常。但是数据不是从套接字传递的。我检查了其他.net代码。没事。这个问题也很少发生,只有十分之一。任何建议都会很有帮助。

最佳答案

这听起来像是由防火墙或其他 TCP 设置引起的典型问题。
如果连接空闲超过 x 秒,防火墙可能会静默断开连接。
由于 TCP 协议(protocol)在这种情况下不会产生事件(类似于拔网线),强烈建议每隔 x 秒发送一次 ping 消息,以便防火墙保持打开状态,确保您可以连接.如果 ping 丢失,服务器将断开客户端。

关于c# - 套接字连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2047380/

相关文章:

c# - .NET 4.5 中未观察到的任务异常仍然会导致应用程序崩溃

node.js - 无法在 Windows Server 2012 上安装 socket.io

c - UNIX TCP/IP :read: Transport endpoint is not connected read: Transport endpoint is not connected

javascript - 检测客户端的 socket.io 断开连接和销毁事件

c# - 从 GridView 添加项目到 ListBox

c# - .NET SHA256 与 Object.GetHashCode()

c# - 递归解析字符串

c# - 如果未从 DistinctBy 中找到重复项,则返回 0

.net - 在JToken上进行Is操作编译

.net - 配置 Fody 解决方案编织器