【问题标题】:C# Socket exception when Shutdown in called on the client在客户端调用 Shutdown 时的 C# Socket 异常
【发布时间】:2022-01-27 13:38:09
【问题描述】:

我正在编写一个 C# 客户端来连接嵌入式系统(服务器)。最初我能够连接到服务器并发送数据。然后我重新启动服务器(客户端未关闭)并在服务器进入就绪状态时,我首先尝试断开(关闭)客户端并重新连接。现在,在客户端关闭期间,我收到了套接字异常 10053 - 已建立的连接被主机中的软件中止。

您能帮我理解可能是什么问题吗? 注意:如果我尝试重新连接而不尝试关闭(在服务器重新启动后),那么连接工作正常并且我能够传输数据。

【问题讨论】:

    标签: c# sockets


    【解决方案1】:

    套接字可能使用 TCP 协议。 TCP 旨在保持两者之间的恒定通信线路。这意味着为了关闭连接,客户端和服务器都会互相说连接将结束。但是由于您仅在重新启动后才收到错误,我相信当您关闭服务器时,服务器也没有机会正确关闭连接。因此,当尝试在客户端上重新启动连接时,它已经“丢失”了它的连接而不知道它,因为它没有从服务器听到它。因此,它不能正式关闭套接字,因为服务器不再与套接字通信。

    您有两个选择:接受异常并使用 try catch,这可能不太整洁。另一种选择是尝试强制服务器在关闭之前或关闭期间正式关闭套接字,以便通知客户端。然后,客户端将每隔几分钟重试一次连接。

    由于我尚未对代码进行太多工作,因此我无法详细说明,但我希望这对您来说很清楚。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    相关资源
    最近更新 更多