【发布时间】:2012-08-25 06:43:07
【问题描述】:
我想接收数据流。因此,有时数据可能会枯竭。在这种情况下,如果 Receive 方法返回它到目前为止收到的内容,那就太好了。
当我使用 .Net Socket 并将其称为 Receive 方法时,该调用是否会阻塞,直到它能够完全填满缓冲区?或者它会在它能够返回至少 1 个字节后立即返回吗? (假设套接字没有关闭)
如果我明确地传递一个大小参数,这有关系吗?异步方法BeginReceive 会有什么影响吗? (我猜这两种情况下的行为都是一样的)
在阅读this answer 时,您似乎应该总是期望缓冲区被填满,因为它建议您执行while (bytesRead == bytesRequested)。但是the MSDN documentation 中的一个示例使用了while (bytesRead > 0)
【问题讨论】: