在 C/C++ 中,常规非阻塞网络套接字上的 read() 将立即返回缓冲区中当前可用的数据量,最多可达指定的量(因此,如果我们要求 16 个字节,但只有 8 个可用字节)目前,我们将获得这 8 个数据,并由我们再次调用 read() 并获取所有数据)。
在 C# 中,有 NetworkStream,它具有内置超时 - 这是否意味着 NetworkStream.Read() 会等待,直到达到超时或读取请求的数据量,或者是否会等待为我们提供缓冲区中当前可用的大于 0 的数据量,最多可达请求的数据量(如标准套接字所做的那样),即使还有时间?
最佳答案
它将读取可用数据,最多可达参数中指定的字节数,如 MSDN 中所述。 ,除非流因超时或其他异常而关闭。
The Read operation reads as much data as is available, up to the number of bytes specified by the size parameter. If the remote host shuts down the connection, and all available data has been received, the Read method completes immediately and return zero bytes.
关于c# - C# NetworkStream.Read() 会等到读取指定数量的数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39063254/