【问题标题】:In which scenario would EndSend receive a SocketException?EndSend 在哪种情况下会收到 SocketException?
【发布时间】:2014-04-06 19:32:04
【问题描述】:

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

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

场景 1:应用调用 BeginSend,在发送数据时,应用调用 BeginDisconnect/Disconnect
结果:Socket直到所有数据都发送完毕后才发送FIN,并且EndSend成功。

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

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

【问题讨论】:

    标签: c# sockets socketexception


    【解决方案1】:

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

    【讨论】:

    • 我禁用了正在发送数据的套接字使用的 NIC,并在调用 EndSend 时抛出了 SocketException
    猜你喜欢
    • 2022-09-25
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    相关资源
    最近更新 更多