我的服务器套接字上收到太多字节

时间:2015-11-20 19:04:37

标签: c# sockets bytearray

我的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

为什么我的服务器收到了更多的字节?

1 个答案:

答案 0 :(得分:1)

问题在于,无论实际接收的字节数是多少,都要添加整个缓冲区数组data

更改行

requestInBytes.AddRange(data)

requestInBytes.AddRange(data.Take(buffer.Length))