在以下通用场景中:
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)?文档没有给出提示。
答案 0 :(得分:5)
是的就是它!
如果你看一下NetworkStream类中ReadTimeout和WriteTimeout属性的实现,你会发现它们只是封装了Socket ReceiveTimeout和SendTimeout属性(并且TcpClient ReceiveTimeout和SendTimeout属性是包装器的Socket属性。同名)。
这意味着最终你要通过NS和TC对象获取或设置Socket的ReceiveTimeout和SendTimeout属性,无论如何。
简而言之:
NS.ReadTimeout == TC.ReceiveTimeout == Socket.ReceiveTimeout
MS.WriteTimeout == TC.SendTimeout == Socket.SendTimeout