C# NetworkStream.Read() 会等到读取指定数量的数据吗?

2024-05-07

在 C/C++ 中,常规非阻塞网络套接字上的 read() 将立即返回缓冲区中当前可用的数据量,最多可达指定的量(因此,如果我们要求 16 个字节,但目前只有 8 个可用字节) ,我们将得到这 8 个,由我们决定再次调用 read() 并获取所有数据)。

在 C# 中,有 NetworkStream,它具有内置超时 - 这是否意味着 NetworkStream.Read() 会等待,直到达到超时或数据量要求的被读取,还是会为我们提供缓冲区中当前可用的大于 0 的数据量,最多可达请求的数据量(如标准套接字所做的那样),即使还有剩余时间?


它将读取可用数据,最多可达参数中指定的字节数,如上所述MSDN https://msdn.microsoft.com/en-us/library/system.net.sockets.networkstream.read(v=vs.110).aspx,除非流因超时或其他异常而关闭。

Read 操作读取尽可能多的可用数据,最多可达 size 参数指定的字节数。如果远程主机关闭连接,并且已接收到所有可用数据,则 Read 方法立即完成并返回零字节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# NetworkStream.Read() 会等到读取指定数量的数据吗? 的相关文章

随机推荐