TcpClient TimeOuts vs. NetworkStream TimeOuts



在下面的通用场景中:

System.Net.Sockets.TcpClient TC = SomeHowObtained;
System.Net.Sockets.NetworkStream NS = TC.GetStream();

据我所知,有 3 个超时:

NS.ReadTimeout // 1
TC.SendTimeout // 2
TC.ReceiveTimeout // 3
NS.WriteTimeout // 4
(1) = (

3) 和 (2) = (4) 是行为意义上的吗?文档没有给出提示。

是的,就是这样!

如果您查看 NetworkStream 类中 ReadTimeout 和 WriteTimeout 属性的实现,您会发现它们只是套接字接收超时和发送超时属性的包装器(TcpClient ReceiveTimeout 和 SendTimeout 属性是同名套接字属性的包装器)。

这意味着最终您无论如何都会通过 NS 和 TC 对象获取或设置 Socket 的 ReceiveTimeout 和 SendTimeout 属性。

简而言之:

NS.ReadTimeout == TC.ReceiveTimeout == Socket.ReceiveTimeout
MS.WriteTimeout == TC.SendTimeout == Socket.SendTimeout

相关内容

  • 没有找到相关文章

最新更新