gpt4 book ai didi

TcpListener 停止接受或接受断开的连接

转载 作者:可可西里 更新时间:2023-11-01 02:44:35 26 4
gpt4 key购买 nike

我们目前在 Windows 上运行的自行编写的服务器应用程序遇到问题(出现在不同版本上)。服务器监听 TCP 端口,接受连接,交换一些数据,然后再次关闭连接。大约有 100 个客户端不时连接。

有时服务器停止工作:日志文件显示连接仍然​​被接受,但在第一次读取尝试时发生套接字错误(10054 - 连接被对等方重置)。我不认为这是一个客户端问题,因为它突然停止对所有客户端工作。

现在我们发现,同样的问题出现在我们的旧服务器软件上,甚至是用另一种编程语言编写的。所以这似乎不是我们程序中的错误 - 我认为它必须是某种操作系统/防火墙问题?当然,防火墙已经停用,这并没有解决问题。

有什么想法可以研究吗? Wireshark 日志将很快跟进..

日志摘录(时间戳、线程 ID、消息)

11:37:56.137 T#3960 Connection from 10.21.13.3
11:37:56.138 T#3960 Client Exception: Socket Error # 10054
Connection reset by peer.
11:37:56.138 T#3960 ClientDisconnected
11:38:00.294 T#4144 Connection from 10.21.13.3

可以看到异常几乎是在接受连接的同时发生的,在这种情况下,客户端会在几秒后重新连接。

最佳答案

“有状态”防火墙或 NAT 会跟踪连接,并且应该为它不知道的连接发送 RST。如果防火墙由于某种原因失去了对连接的跟踪,那么您可能会看到随机连接被重置。

我们工作中的路由器就是这样做的——当 PPP 连接断开时它会忘记连接,这在下雨和 DSL 重启需要太长时间的情况下非常无益。但是,它不会重置连接,只会丢弃数据包(甚至更无用!)。

关于TcpListener 停止接受或接受断开的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5978309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com