当我向远程机器发送大量数据时,几乎立即执行发送回调。
[05:10:35:981] ChildSocket.Send(): Sending 1048508 bytes.
[05:10:35:988] ChildSocket.SendCallback(): Sent 1048508 bytes.
我的互联网无法在7毫秒内成功发送近一兆字节。
由于这种行为,我认为调用BeginSend只是将发送缓冲区写入操作系统,操作系统将在适当的时候发送它。
怀疑是否正确?为什么send回调执行得这么快?
答案 0 :(得分:0)
是的,操作系统会缓冲数据(尽管1MB看起来非常多)。发送永远不会保证远程端收到数据。即使没有OS缓冲也是如此。让对方确认数据或Shutdown
套接字并等待连接完成。