【问题标题】:Python Socket programming change server socketPython Socket编程改变服务器套接字
【发布时间】:2018-11-08 02:14:36
【问题描述】:

我的程序有一个服务器套接字和多个客户端套接字, 所以,我想做的是当服务器关闭(关机)时,将其中一个客户端套接字更改为服务器套接字。 有没有办法做到这一点?

【问题讨论】:

  • 我认为这是不可能的,而且这似乎是一件相当不正当的事情。如果你还想拥有一个服务器套接字,那你为什么要关闭你已经拥有的呢?
  • @jasonharper 我的程序概念是套接字聊天程序。所以第一个程序将是服务器,第二个或以后的程序将是客户端。但我有一个问题,如果服务器关闭,客户端连接也会关闭。我想要做的就是连接客户端,即使服务器关闭。

标签: python sockets


【解决方案1】:

我想要做的是当服务器关闭(关机)时,更改其中一个 客户端套接字到服务器套接字。有没有办法做到这一点?

不——一旦连接了 TCP 套接字,它就只能用于那个 TCP 连接,并且一旦 TCP 连接中断(例如,服务器退出),那么你对套接字所能做的就是关闭它。

但是,这并不意味着您不能拥有像您所设想的那样具有高可用性的聊天系统。您可以做的是让您的客户端“提前计划”,提前收集所有其他客户端的 IP 地址(通过服务器,或者如果所有客户端都在同一个 LAN 上,可能通过广播或多播 UDP 数据包)。这样,如果/当服务器离开时,客户端都有另一个方便的 IP 地址,它们可以自动尝试连接(使用新的 TCP 套接字)。

请注意,您需要确保在该 IP 地址上运行的程序正在接受传入的 TCP 连接(服务器样式);您可能还想指定某种规则,以便所有客户端将重新连接到相同的 IP 地址(例如,按数字对 IP 地址进行排序,并让所有客户端尝试连接到列表中最小的 IP 地址,或类似那个)。

【讨论】:

    猜你喜欢
    • 2011-10-01
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多