4 Stimmen

TcpClient-Zeitüberschreitungen vs. NetworkStream-Zeitüberschreitungen

Im folgenden allgemeinen Szenario:

System.Net.Sockets.TcpClient TC = SomeHowObtained;
System.Net.Sockets.NetworkStream NS = TC.GetStream();

Soweit ich sehe, gibt es 3 Timeouts:

NS.ReadTimeout // 1
TC.SendTimeout // 2
TC.ReceiveTimeout // 3
NS.WriteTimeout // 4

Ist (1) = (3) und (2) = (4) im Sinne des Verhaltens? Die Dokumentation gibt keinen Hinweis darauf.

8voto

darkey Punkte 3632

Ja, das ist es!

Wenn Sie sich die Implementierung der Eigenschaften ReadTimeout und WriteTimeout in der Klasse NetworkStream ansehen, werden Sie feststellen, dass es sich dabei nur um Wrapper um die Eigenschaften Socket ReceiveTimeout und SendTimeout handelt (und die Eigenschaften TcpClient ReceiveTimeout und SendTimeout sind Wrapper um die gleichnamigen Socket-Eigenschaften).

Das bedeutet, dass Sie letztendlich die ReceiveTimeout- und SendTimeout-Eigenschaft des Socket über NS- und TC-Objekte erhalten oder setzen, egal was passiert.

Kurz und bündig:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X