我试图通过Microsoft Docs寻找答案,然后进入C#Source Reference,并一直深入到套接字recv
C函数,包括所有文档。
由于套接字类型为WSAEINVAL
,SocketType.Stream = SOCK_STREAM
套接字错误代码似乎是问题情况的明确定义的行为,我引用了recv函数的Microsoft文档:< / p>
套接字尚未绑定,或者未指定未知标志,或者为启用SO_OOBINLINE的套接字指定了MSG_OOB,或(仅对于字节流套接字)len为零或负。
使用len
将值保存到NetworkStream.Read size
参数,在本例中为zero
。
如果我没有错过任何内容,则应该在C#中引发异常,但事实并非如此。相反,当流中有数据时,NetworkStream.Read调用将返回零;否则,则将其阻塞。这种行为不是我从文档发现中所期望的。
问题不一定有任何实际目的,但您知道,问题。
问题
请参考标题。
我应该只是看一下最上面的实现,并假设行为没有得到很好的定义,因为NetworkStream没有在Docs中定义,还是我应该像尝试的那样研究底层实现?< / p>