How To Get All Data From NetworkStream - Newbedev

You might also like

You are on page 1of 4

10/23/21, 1:38 PM How to get all data from NetworkStream | Newbedev

How to get all data from NetworkStream


Solution:

The problem with your code is that you will not get all the data if the data size is bigger than the buffer size
(1024 bytes in your case) so you have to Read the stream inside the loop. Then you can Write all the data
inside a MemoryStream until the end of the NetworkStream .

string str;
using (NetworkStream stream = client.GetStream())
{
byte[] data = new byte[1024];
using (MemoryStream ms = new MemoryStream())
{

int numBytesRead ;
while ((numBytesRead = stream.Read(data, 0, data.Length)) > 0)
{
ms.Write(data, 0, numBytesRead);

}
str = Encoding.ASCII.GetString(ms.ToArray(), 0, (int)ms.Length);
}
}

https://newbedev.com/how-to-get-all-data-from-networkstream 1/4
10/23/21, 1:38 PM How to get all data from NetworkStream | Newbedev

This example from MSDN: NetworkStream.DataAvailable shows how you can use that property to do so:

// Examples for CanRead, Read, and DataAvailable.


// Check to see if this NetworkStream is readable.
if(myNetworkStream.CanRead)
{
byte[] myReadBuffer = new byte[1024];
StringBuilder myCompleteMessage = new StringBuilder();
int numberOfBytesRead = 0;

// Incoming message may be larger than the buffer size.


do{
numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length);

myCompleteMessage.AppendFormat("{0}", Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead)

}
while(myNetworkStream.DataAvailable);

// Print out the received message to the console.


Console.WriteLine("You received the following message : " +
myCompleteMessage);
}
else
{
Console.WriteLine("Sorry. You cannot read from this NetworkStream.");
}

Try this:

private string GetResponse(NetworkStream stream)


{
byte[] data = new byte[1024];
using (MemoryStream memoryStream = new MemoryStream())
{
do
{
stream.Read(data, 0, data.Length);
memoryStream.Write(data, 0, data.Length);
} while (stream.DataAvailable);

return Encoding.ASCII.GetString(memoryStream.ToArray(), 0, (int)memoryStream.Length);


}
}
https://newbedev.com/how-to-get-all-data-from-networkstream 2/4
10/23/21, 1:38 PM How to get all data from NetworkStream | Newbedev
}

Tags: C# / Tcp / Tcpclient / Tcp Ip / Networkstream

Related
C# is the Main problem

Leibniz golf in C#

Code Injection works in C# too!

Shortest Hello World program with no semi colons

Update .NET website without reloading

Can CLR execution continue after 'THROW' is encountered in T-SQL?

Setting up a central CLR stored procedure / function respository library for internal stored procs in other
databases to use?

Daily database maintenance using SQL Server 2008 and a stored procedure

3rd party dll in SQL Server CLR

Login to SQL Server using Windows Authentication

Recent Posts

Python program starts running again after pc wakes up?

Faster way of polygon intersection with shapely

How can I export Markdown documentation to different formats?

What's the difference between buildscript and allprojects in build.gradle?

Wordpress WP_Sitemaps_Renderer::get_sitemap_index_xml()

https://newbedev.com/how-to-get-all-data-from-networkstream 3/4
10/23/21, 1:38 PM How to get all data from NetworkStream | Newbedev

https://newbedev.com/how-to-get-all-data-from-networkstream 4/4

You might also like