我的服务器套接字上接收到的字节太多
Too many bytes received on my server socket
我的 UWP 设备上有一个侦听套接字。
这是对应的代码:
List<byte> requestInBytes = new List<byte>();
using (IInputStream input = args.Socket.InputStream)
{
byte[] data = new byte[BufferSize];
IBuffer buffer = data.AsBuffer();
uint dataRead = BufferSize;
while (dataRead == BufferSize)
{
await input.ReadAsync(buffer, BufferSize, InputStreamOptions.Partial);
requestInBytes.AddRange(data);
dataRead = buffer.Length;
}
}
var ct = requestInBytes.Count;
返回的计数是:
630784
在我的客户端 Winform 桌面上,我发送字节数组如下:
using (TcpClient clientSocket = new TcpClient())
{
await clientSocket.ConnectAsync(GeneralTags.RASPBERRY_PI_IP_ADDRESS, GeneralTags.RASPBERRY_PI_PORT);
using (NetworkStream serverStream = clientSocket.GetStream())
{
List<byte> requestInBytes = new List<byte>();
serverStream.Write(byteArray, 0, byteArray.Length);
serverStream.Flush();
}
}
我发送的数量是:
626840
为什么我的服务器收到更多字节?
问题是您添加了整个缓冲区数组 data
而不管实际接收到的字节数。
换行
requestInBytes.AddRange(data)
至
requestInBytes.AddRange(data.Take(buffer.Length))
我的 UWP 设备上有一个侦听套接字。
这是对应的代码:
List<byte> requestInBytes = new List<byte>();
using (IInputStream input = args.Socket.InputStream)
{
byte[] data = new byte[BufferSize];
IBuffer buffer = data.AsBuffer();
uint dataRead = BufferSize;
while (dataRead == BufferSize)
{
await input.ReadAsync(buffer, BufferSize, InputStreamOptions.Partial);
requestInBytes.AddRange(data);
dataRead = buffer.Length;
}
}
var ct = requestInBytes.Count;
返回的计数是:
630784
在我的客户端 Winform 桌面上,我发送字节数组如下:
using (TcpClient clientSocket = new TcpClient())
{
await clientSocket.ConnectAsync(GeneralTags.RASPBERRY_PI_IP_ADDRESS, GeneralTags.RASPBERRY_PI_PORT);
using (NetworkStream serverStream = clientSocket.GetStream())
{
List<byte> requestInBytes = new List<byte>();
serverStream.Write(byteArray, 0, byteArray.Length);
serverStream.Flush();
}
}
我发送的数量是:
626840
为什么我的服务器收到更多字节?
问题是您添加了整个缓冲区数组 data
而不管实际接收到的字节数。
换行
requestInBytes.AddRange(data)
至
requestInBytes.AddRange(data.Take(buffer.Length))