我看过
- 无法从传输连接读取数据连接已关闭 https://stackoverflow.com/questions/26995191/unable-to-read-data-from-the-transport-connection-the-connection-was-closed
- 无法从传输连接读取数据:现有连接被远程主机强制关闭 https://stackoverflow.com/questions/5420656/unable-to-read-data-from-the-transport-connection-an-existing-connection-was-f#42728008
- 无法从传输连接读取数据 https://stackoverflow.com/questions/14740642/unable-to-read-data-from-the-transport-connections
我对此很陌生,有人告诉我问题不是服务器。无论如何,问题可能是客户端还是客户端导致了强制服务器断开连接的问题?
我建立联系
_client.BeginConnect(host, port, ConnectCallback, null);
然后在 ConnectCallback 中
_client.EndConnect(result);`
_client.NoDelay = true;`
_client.ReceiveBufferSize = 65535;`
NetworkStream ns = _client.GetStream();`
byte[] buffer = new byte[_client.ReceiveBufferSize];`
ns.BeginRead(buffer, 0, buffer.Length, ReadCallback, buffer);`
然后在 ReadCallback 中
ns = _client.GetStream();`
read = ns.EndRead(result);`
这就是它有时会失败的地方。应用程序中还有其他连接,它们没有问题。其中一个连接是与我遇到问题的同一台服务器的连接,但在不同的端口上。
所有机器都在同一网络上。这是连接到该特定服务器/端口的唯一客户端。我们运行该应用程序大约 3 小时,这个错误随时都会发生。
Edit我感谢您的评论和意见。作为编程和网络等方面的新手,我仍然有一个问题:是否有可能是客户端引起了问题?
远程端点或网络上的设备正在关闭 TCP 连接。
在读取 TCP 连接之前,您始终需要测试 TCP 连接是否可用并已连接。
您无法控制远程端点何时关闭连接。即使您在远程端点上编写代码,它仍然可能因断电而关闭。
当连接关闭以及数据可用时,将触发 ReadCallback。您的代码负责检测连接是否已关闭,并在代码中采取必要的操作来处理这种情况。
处理此问题的最简单方法是捕获异常,停止从套接字读取/写入,执行任何清理任务并在必要时重新连接等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)