[英]Until when does NetworkStream.Write block?
我能想到这些可能的答案:
直到数据被写入发送方的发送缓冲区。
因此,如果缓冲区已满,它将阻塞。
如果由于网络问题或接收器端的接收缓冲区已满,发送缓冲区可能尚未发送数据,则发送缓冲区可能已满。
您可以进行一个实验:制作发送方和接收方,将发送方的套接字发送缓冲区设置为较小的值,将接收方的接收缓冲区设置为较小的值。
开始发送,在接收方接受连接,但不接收。 当发送的字节数约为 SenderSendBuffer + ReceiverReceiveBuffer 时,套接字将被阻塞。
NetworkStream
不缓冲数据。 最终,对NetworkStream.Write
的调用将转换为套接字发送function 调用。 此 function 的 MSDN 文章说:
发送 function 成功完成并不表示数据已成功交付并接收到接收方。 这个function只表示数据发送成功。
这回答了你的问题了吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.