2009-11-16 120 views
5

.NET允許兩個非常相似的方式從網絡上 「讀」(假設TCP連接):TcpClient.GetStream()閱讀()與TcpClient.Client.Receive()

1. TcpClient.GetStream().Read() 
2. TcpClient.Client.Receive() 

通過查看在NetworkStream源代碼中 - 它似乎是對底層套接字的額外封裝,它最終調用Socket方法。

問題:使用「間接」NetworkStream變體(#1)的好處是什麼,而不是使用由Socket實現提供的直接包裝器?

謝謝, 鮑里斯。

回答

10

事實上,使用第一個選項(TcpStream而不是Socket)有一個相當明顯的好處。好處是,當同一個程序需要不同的底層實現時,流API更加靈活。

例如,有時可能使用SSL並且有時可能不使用它的代碼可以在SslStream和TcpStream之間切換,而不會更改調用代碼。這是很難完成使用純粹的套接字API。

1

沒什麼,真的。只是有時使用Stream更方便。

-1

對我來說,一個成功的Socket.Receive操作收到的零字節告訴你連接已關閉。