1

当我调用 socket.Receive(Buffer) 时,有没有一种方法可以阻止调用,直到读取到一定数量的字节?如果不是,制作接收循环的典型方法是什么?

4

1 回答 1

2

您通常需要使用接受偏移量和计数的重载,并手动循环(检查返回值)直到您有足够的量。例如:

void ReadExact(Socket socket, byte[] buffer, int offset, int count) {
    int read;
    while(count > 0 && (read = socket.Receive(
       buffer, offset, count, flags)) > 0)
    {
        offset += read;
        count -= read;
    }
    if(count > 0) throw new EndOfStreamException();
}

如果您将套接字包装在NetworkStream.

于 2012-08-05T15:12:53.673 回答