NetworkStream.DataAvailable 是否知道发送方的发送缓冲区是否为空?或者它只是简单地表明接收器的读缓冲区是否有数据?我的假设是后者...
具体来说,对于一些涉及正在进行的会话的套接字工作,我目前使用长度前缀,以便接收者确切知道当前批次中有多少数据;但是,我收到了一个 .patch,建议我改用 NetworkStream.DataAvailable。我担心的是,这只会告诉我接收者得到了什么——而不是发送者最初发送的——但我不是套接字专家。
我错了吗?或者长度前缀是要走的路?
(请注意,在流关闭之前,我不能简单地 Read(),因为在同一个连接上发送了多个批次,并且将每个批次视为单独的至关重要;如果我在一个批次中读取太多(即使它被缓冲并丢弃)然后对话将中断)。