根据MSDN的说法,Socket.EndSend方法可以使用面向连接的协议(protocol)为套接字抛出SocketException。什么时候 ?

我测试了两个场景,没有一个抛出SocketException。

方案1:应用程序调用BeginSend,并且在发送数据时,应用程序调用BeginDisconnect/Disconnect
结果:在所有数据发送完毕且EndSend成功后,套接字才发送FIN。

方案2:应用程序调用BeginSend,并且在发送数据时,套接字从远程端点接收RST。
结果:套接字停止发送数据,调用Callback,并且EndSend成功报告已发送所有字节。不明白为什么?

Socket.EndSend方法何时在面向连接的协议(protocol)上抛出SocketException?

最佳答案

我知道如果断开连接(而不是有序关闭),它的确会引发错误。您应该能够通过拉动网络电缆来重现此行为。如果不能,请发布一些代码。

关于c# - 在哪种情况下,EndSend会收到SocketException?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22898907/

10-11 02:17