繁体   English   中英

C# TcpClient - 客户端确定远程服务器是否正常关闭连接的最佳方法是什么?

[英]C# TcpClient - What's the best way for a client to determine if remote server has gracefully shutdown connection?

我知道有各种建议的方法来实现这一点,使用 Poll/Available/Send 等,但它们似乎都不适合我。 我有一个到远程服务器的连接,远程服务器在收到特定消息后会优雅地断开连接。 我需要确保自己不会断开与远程服务器的连接,并等待服务器关闭连接,然后才能安全地重新连接并发送其他后续消息。

我在 Stream 上使用 ReadAsync 方法从该连接获取响应,如下所示:

while (await TcpClientObject.GetStream().ReadAsync(bufferData, 0, bufferData.Length) > 0)
{
     //My logic here to handle responses
}

在尝试重新连接之前,我最推荐的验证远程服务器是否已正常关闭连接的方法是什么? 谢谢。

如果一切顺利, ReadAsync将在服务器关闭连接时返回 0。

如果您的一方检测到异常断开连接,则会引发异常,但在最坏的情况下,您的一方仍然认为它已连接并且ReadAsync不会返回。

暂无
暂无

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

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