pau*_*ons 4 c# timeout networkstream tcpclient
在以下通用场景中:
System.Net.Sockets.TcpClient TC = SomeHowObtained;
System.Net.Sockets.NetworkStream NS = TC.GetStream();
Run Code Online (Sandbox Code Playgroud)
据我所知,有3次超时:
NS.ReadTimeout // 1
TC.SendTimeout // 2
TC.ReceiveTimeout // 3
NS.WriteTimeout // 4
Run Code Online (Sandbox Code Playgroud)
在行为意义上是(1)=(3)和(2)=(4)?文档没有给出提示.
对,就是那样 !
如果你看一下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
Run Code Online (Sandbox Code Playgroud)