我正在尝试读取通过连接的机器缓冲区中存在的所有数据TCP/IP
但我不知道为什么我没有获取所有数据,有些数据丢失了。
这是我正在使用的代码..
using (NetworkStream stream = client.GetStream())
{
byte[] data = new byte[1024];
int numBytesRead = stream.Read(data, 0, data.Length);
if (numBytesRead > 0)
{
string str= Encoding.ASCII.GetString(data, 0, numBytesRead);
}
}
请告诉我从机器获取所有数据时缺少什么。
提前致谢..
您的代码的问题是,如果数据大小大于缓冲区大小(在您的情况下为 1024 字节),您将无法获取所有数据,因此您必须在循环内读取流。然后你可以Write
a 内的所有数据MemoryStream
直到结束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);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)