2012-12-15 9 views

Odpowiedz

5

W tym przypadku nie, nie ma różnicy. Wewnętrznie NS.DataAvailable zwraca true, gdy Socket.Available != 0. Od TC.Available po prostu zwróć Socket.Available i sprawdzasz, czy jest to więcej niż 0, to w zasadzie robisz to samo.

+1

Rzeczywiście [kod źródłowy TCPClient.cs w języku C# .NET] (http://www.dotnetframework.org/default.aspx/[email protected]/[email protected]/DEVDIV_TFS/Dev10/Releases/RTMRel/ndp/fx/ src/Net/System/Net/Sockets/TCPClient @ cs/1305376/TCPClient @ cs) czyta 'public int Available {get {return m_ClientSocket.Available;}}' i [Kod źródłowy NetworkStream.cs w C# .NET] (http : //reflector.webtropy.com/default.aspx/[email protected]/[email protected]/DEVDIV_TFS/Dev10/Releases/RTMRel/ndp/fx/src/Net/System/Net/Sockets/[email protected]/1305376/NetworkStream @cs) czyta 'return chkStreamSocket.Available! = 0;'. –

2

Od MSDN:

NetworkStream.DataAvailable

Pobiera wartość wskazującą, czy danych jest dostępna na NetworkStream do odczytu.

TcpClient.Available

Pobiera ilość danych które zostało odebranych z sieci i jest dostępne do odczytu.

NetworkStream.DataAvailable powraca boolean (true, jeśli dane są dostępne na strumień do odczytu), TcpClient.Available powraca Int32 (liczba bajtów danych otrzymanych z sieci i dostępne do odczytu)