4

在以下通用场景中:

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) 是行为意义上的吗?该文档没有给出提示。

4

1 回答 1

8

对,就是那样 !

如果你看一下 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
于 2012-12-13T22:23:44.957 回答