如果没有通过流接收数据,则tcpclient关闭连接

时间:2015-12-26 06:50:43

标签: c# .net-3.5 tcpclient

我想知道TcpClient NetworkStream如果发生超时,究竟会发生什么。

在调试代码时,我发现在发送请求之后如果在提及超时期限内没有收到数据,它会抛出异常并且不幸地关闭连接(TcpClient.Connected变为false):

  

无法从传输连接读取数据:连接   尝试失败,因为关联方没有正确回应   一段时间后,或建立连接失败,因为   连接主机未能响应。

抛出异常是可以的,但我想知道如何阻止它关闭连接。

如果有人可以提供更多有关此问题的见解,那就太棒了。

1 个答案:

答案 0 :(得分:1)

你检查过这个吗? Reconnect TCPClient after interruption我认为如果你的TCP连接有足够长的TTL,如果发生异常(我相信你会抛出一个SocketException)你可以抓住它并启动你的重试逻辑。这有几个实现,显然这取决于用例,但通常在"放弃"之前有许多尝试(配置值)。连接。这样,您的经理将重试连接X次,并且如果成功连接将继续进行,否则将在链中传播异常。