Тайм-ауты 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) в смысле поведения? Документация не дает подсказки.


person paul simmons    schedule 13.12.2012    source источник


Ответы (1)


Да это оно !

Если вы посмотрите на реализацию свойств ReadTimeout и WriteTimeout в классе NetworkStream, вы обнаружите, что они являются просто обертками вокруг свойств Socket ReceiveTimeout и SendTimeout (а свойства TcpClient ReceiveTimeout и SendTimeout являются обертками вокруг одноименных свойств Socket) .

Это означает, что в конце концов вы получаете или устанавливаете свойства ReceiveTimeout и SendTimeout Socket через объекты NS и TC, несмотря ни на что.

В двух словах :

NS.ReadTimeout == TC.ReceiveTimeout == Socket.ReceiveTimeout
MS.WriteTimeout == TC.SendTimeout == Socket.SendTimeout
person darkey    schedule 13.12.2012