通过Tcp Client读取大数据包

时间:2017-08-13 02:53:46

标签: c# tcp

使用TCP客户端时,NetworkStream.read方法通常不会返回完全填充的缓冲区。我怎样才能使它阻止进一步执行,直到它写完整个数组?

byte[] datagramByteForm = new byte[dgramSizeInt];
int j = dataIOStream.Read(datagramByteForm, 0, datagramByteForm.Length);//read the actual datagram
if (j != datagramByteForm.Length)
{
    throw new Exception("Connection j value: " + j + " expected amount: " + datagramByteForm.Length);
}

1 个答案:

答案 0 :(得分:1)

它实际上很简单,你只需要在stream.read函数中使用提供的参数。 这是一个例子(未经测试):

        TcpClient TCC = new TcpClient("127.0.0.1", 200);
        int cOffset = 0, dgramSizeInt = 5000, j;
        byte[] datagramByteForm = new byte[dgramSizeInt];

        var dataIOStream = TCC.GetStream();

        while (cOffset <= dgramSizeInt)
        {
            j = dataIOStream.Read(datagramByteForm, cOffset, dgramSizeInt-cOffset);
            cOffset += j;
        }