2012-12-13 41 views
3

在下面的通用方案:TcpClient的超时对比的NetworkStream超时

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)在行为意义上?文档不提供提示。

回答

5

就是这样!

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

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

一言以蔽之:

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