繁体   English   中英

当我的一个客户端崩溃时,NetworkStream.Write挂起我的服务器应用程序

[英]NetworkStream.Write hangs my sever app when one of my clients crashed

我有一个clien-server .net应用程序,通过tcp进行通信。 我的服务器定期向客户端发送原始字节数据包。

它有99.9%的时间很好用,但有时候,当我的一个客户崩溃时(一年两次,而不是更多)我的服务器挂起。

我调试它(​​通过向我的客户端添加一些测试代码来崩溃我的应用程序),并注意到问题在于stream.Write(bytes, 0, bytes.Length); 它简单没有做任何事情,没有回应,没有回报,只是挂起。 Stream是一个NetworkStream。

我之前检查了stream.CanWrite ,但它的响应是真的。

那么,我如何检查服务器端,我的一个客户崩溃了? 在将数据发送到其他客户端之前,我应该检查NetworkStream(或其他什么)?

将超时设置为TCP连接的套接字。 看起来现在它是无限的,所以服务器无限期地等待来自死客户端的响应。

写入可能只是因为另一方没有从套接字读取并且它们的OS套接字缓冲区已满(但它们没有关闭套接字,也没有处于错误状态)。

以下是对此类场景的描述: http//stringarray.net/? p = 29

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM