【发布时间】:2015-04-07 18:34:43
【问题描述】:
我在我的服务器和运行在同一主机上的客户端之间建立了一个 TCP 连接。在我们的案例中,我们不断地从服务器收集和读取或说出源。 我们在 3 个不同的端口上读取数据。
一旦源停止发布数据或重新启动,服务器/源无法在同一端口上再次发布数据,说明端口已绑定。给出的原因是客户端仍然在这些端口上建立了连接。
我想知道这可能是什么原因?由于客户端已经在侦听这些端口并尝试一次又一次地重新连接,因此是否会出现问题,因为我们尝试了这种重新连接机制。当源和客户端位于不同的主机上并且不同的主机对我们来说工作得很好时,我更多地在源端寻找原因,因为客户端中的相同代码。
编辑:- 我在阅读各种文章时发现了这一点。
关于使用 SO_LINGER 在关闭时发送 RST 以避免 TIME_WAIT 状态的问题:我在处理背靠背问题的路由器访问服务器(保留名称以保护有罪者)方面遇到了一些问题专用于特定频道的调制解调器上的连接。他们所做的是放开连接,接受另一个调用,尝试连接到主机上的知名套接字,但主机拒绝连接,因为存在涉及知名套接字的处于 TIME_WAIT 状态的连接。 (Stevens 的书TCP Illustrated, Vol 1 更详细地讨论了这个问题。)为了避免连接拒绝问题,我不得不安装一个选项来执行 reset-on-close服务器发起断开连接时的服务器。
来源链接:-http://developerweb.net/viewtopic.php?id=2941
我想我也面临同样的问题:'尝试连接到主机上的知名套接字,但主机拒绝连接'。可能的修复提及是“当服务器启动断开连接时在服务器中执行重置时关闭的选项”。现在我该怎么做?
【问题讨论】:
-
不要对非代码文本使用代码格式。
-
请不要对非代码文本使用代码格式。