当我向远程 机器发送大量数据时,发送回调几乎立即执行。
[05:10:35:981] ChildSocket.Send(): Sending 1048508 bytes.
[05:10:35:988] ChildSocket.SendCallback(): Sent 1048508 bytes.
我的网速不可能在 7 毫秒内成功发送近 1 兆字节。
由于这种行为,我的印象是调用 BeginSend 只是将发送缓冲区写入操作系统,操作系统会在适当的时候发送它。
这种怀疑是否正确?为什么发送回调执行得这么快?
最佳答案
是的,操作系统会缓冲数据(尽管 1MB 似乎很多)。 Send 永远不会向您保证数据已被远程端接收到。即使没有操作系统缓冲也是如此。要么让另一方确认数据,要么关闭
套接字并等待连接完成。
关于c# - 为什么在调用 Socket.BeginSend 后我的发送回调执行得如此之快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18537362/