【问题标题】:TcpClient TimeOuts vs. NetworkStream TimeOutsTcpClient 超时与 NetworkStream 超时
【发布时间】:2012-12-01 21:49:37
【问题描述】:

在以下通用场景中:

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) 是吗?文档没有给出提示。

【问题讨论】:

    标签: c# timeout tcpclient networkstream


    【解决方案1】:

    是的,就是这样!

    如果你看一下 NetworkStream 类中 ReadTimeout 和 WriteTimeout 属性的实现,你会发现它们只是 Socket ReceiveTimeout 和 SendTimeout 属性的包装器(而 TcpClient ReceiveTimeout 和 SendTimeout 属性是 Socket 的 Socket 属性的包装器)同名)。

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

    简而言之:

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

    【讨论】:

      猜你喜欢
      • 2015-03-25
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-04
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      相关资源
      最近更新 更多