当我调用 socket.Receive(Buffer) 时,有没有一种方法可以阻止调用,直到读取到一定数量的字节?如果不是,制作接收循环的典型方法是什么?
问问题
79 次
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 回答