我无法快速复制,但我知道如何重现这一点。
当我的客户端连接到服务器并且我的客户端长时间闲置(它等待服务器给它一个msg作为其订阅的东西)时,它正在使用binaryread.ReadByte()
,它被强制转换为enum和用于开关。在未知的时间之后,服务器可以向它发送消息但是因为连接已经空闲了很长时间服务器获得异常并且理解客户端已经断开连接。客户端(仍然在交换机上执行ReadByte())不会得到异常而只是坐在那里。它甚至没有意识到它与服务器断开连接。
为什么不呢?我该如何解决这个问题?现在我直接使用networkstream(这是流二进制正在使用),但我不认为这将是正确的解决方案。
我如何正确解决这个问题?