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

标签 c# networking

在 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/

相关文章:

c# - 将 Action 委托(delegate)作为参数传递给构造函数时出现参数错误

c# - Environment.Exit 需要很长时间才能关闭应用程序

php - 在单独的服务器上,PHP 和 MySQL 之间可以有多少连接/秒?

循环中的 Python socket.recv 只接收一次

java - 通过 Internet 传输文件(使用 java)

c# - Blazor 服务器应用程序中的 Application Insight 关联

c# - 如何正确处置 Form,而不会有从已处置对象上的另一个线程调用 Invoke 的风险?

c# - 如何在调整 PictureBox 大小时使矩形移动

objective-c - Cocoa 网络流和垃圾收集器

java - 我怎样才能在java中实现像apache reload这样的东西?