我对 .NET 套接字实现有几点看法,所以我将按顺序说明它们:
- 我的理解是,Socket 的实例在其内部类实现中具有可变大小的缓冲区,实际上是一个字节队列,并且与您在应用程序中声明和定义的应用程序缓冲区不同。
stream
在使用 socket type:和 protocol type:的同步模式下tcp
,当使用方法Receive
(阻塞进程)时,带有参数的应用程序字节缓冲区实际上是在与您声明的应用程序字节缓冲区大小相同的块中将套接字缓冲区出队并在您的应用程序中定义,然后将此块分配给您发送给Receive
功能的应用程序字节缓冲区。- 如果上述情况成立,那么当字节缓冲区的长度大于套接字队列中的字节元素时会发生什么?
- 此外,如果 2 正确,则
Send
套接字的方法将数据发送到端点连接的主机套接字缓冲区而不是应用程序缓冲区。 - 最后,由于 Socket 方法
Accept
是非阻塞的,因此在底层实现中为它创建了一个线程,并且它有一个自己的队列,当Accept
方法被调用时它会出队。
我要求所有这些来检查我到目前为止的理解是否正确,或者它是否大部分是错误的并且需要纠正。