根据MSDN Socket.EndSend 方法可以使用面向连接的协议为套接字抛出 SocketException 。什么时候?
我测试了几个场景,没有人抛出 SocketException 。
场景1:应用程序调用 BeginSend ,在发送数据时,应用程序调用 BeginDisconnect / Disconnect
结果:在发送所有数据之前,Socket不发送FIN,并且 EndSend 成功。
场景2:应用程序调用 BeginSend ,当它发送数据时,套接字从远程端点接收RST。
结果:Socket停止发送数据,调用Callback并且 EndSend 成功报告所有字节都已发送。不明白为什么?
Socket.EndSend 方法何时在面向连接的协议上抛出 SocketException ?
答案 0 :(得分:1)
我知道如果断开连接(而不是有序关闭),它确实会引发错误。您应该能够通过拉动网络电缆来重现此行为。如果你不能,请发一些代码。