在什么情况下EndSend会收到SocketException?

时间:2014-04-06 19:32:04

标签: c# sockets socketexception

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

我测试了几个场景,没有人抛出 SocketException

场景1:应用程序调用 BeginSend ,在发送数据时,应用程序调用 BeginDisconnect / Disconnect
结果:在发送所有数据之前,Socket不发送FIN,并且 EndSend 成功。

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

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

1 个答案:

答案 0 :(得分:1)

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