【发布时间】:2012-03-23 08:15:43
【问题描述】:
我正在使用 Winsock,我需要反复发出 TCP 连接到第三方服务器。这些应用程序可能会一次保留数天。我是唯一连接到服务器的客户端。连接之间的时间大约是几秒钟,并且连接只保持足够长的时间来发送几个字节的单个消息。我目前看到几个小时后连接开始失败(WSAECONNREFUSED)。有什么我必须做的(例如套接字选项等)来确保这些频繁的重复连接会无限期地成功吗?谢谢!
【问题讨论】:
-
您所描述的通常被认为是客户的“不良行为”。 “连接被拒绝”错误可能是服务器资源不足(或限制您的客户端),因为它连接太频繁。你的用例是什么?你能改变你的设计以减少所需的连接吗?
-
至于耗尽资源,我没有提到连接只保持足够长的时间来发送几个字节。我已经为此编辑了原始帖子。我正在轮询服务器以了解服务的可用性。此可用性经常更改,服务器不允许我注册可用性更改通知。为了向我的人类用户提供准确的系统状态表示,我经常轮询。我同意这并不理想,而且很可能是我被限制了(我在服务器上没有描述什么连接频率是可接受的文档)。
-
我将扩展我之前的评论,指出服务器上的 netstat -an 显示大约 13 个左右处于 TIME_WAIT 状态的连接。虽然这听起来不太好,但我不认为它所表明的问题是所有可用资源都已被消耗,因为 13 在这种情况下是一个很小的数字。
-
听起来不错。您需要更多信息。请问什么窗口在错误事件日志中告诉你?
-
事件日志中没有出现与我的问题相关的内容。