【问题标题】:Communicate between two socket server在两个套接字服务器之间进行通信
【发布时间】:2023-03-07 15:34:01
【问题描述】:

我在 python 中有两个 TCP 套接字服务器,每个都有一些(大约 4 个)客户端。我希望两台服务器能够相互通信,以便两者都可以相互发送命令并进行通信。

这可能吗?如果是,如何?

【问题讨论】:

  • 是的,当然,您只需让其中一个成为另一个的客户
  • 我不明白你的真正意思,但他也会继续为他的客户服务
  • 我现在有点困惑,抱歉,我是编程新手。那么如何才能让计算机既充当客户端又充当服务器呢?即使我尝试使用相同的端口,它也会给我一个错误...
  • 好的,我将发布一个完整的答案,并附上一个简短的例子来说明如何做到这一点
  • 看看zeromq,所有的网络东西都会从你身上抽象出来,你可以专注于你的问题

标签: python sockets tcp p2p


【解决方案1】:

这是一个例子:

import socket
socket_between_servers = None


def connect_to(host='', port=1060):
   global socket_between_servers
   sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   try:
      sock.connect((host, port))  #check if the first server is already waiting
      socket_between_servers = sock
   except socket.error:
      s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
      s.bind((host, port))
      s.listen(5)  # waiting for the 4 clients plus the other server
      print 'waiting for the peers...'
      n = 0
      while n < 5:
         sc, sockname = s.accept()
         if sockname == 'ip addresse of the other server':
            socket_between_servers = sc
         n += 1
   else:
      s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
      s.bind((host, port + 1))
      s.listen(4)  # waiting for the 4 clients
      n = 0
      while n < 4:
         sc, sockname = s.accept()

然后与socket_between_servers 服务器可以通信

【讨论】:

  • 谢谢!我现在理解这个概念并将尝试实现它
猜你喜欢
  • 1970-01-01
  • 2020-05-28
  • 1970-01-01
  • 2020-05-14
  • 2011-02-20
  • 2013-01-08
  • 1970-01-01
  • 2016-10-10
  • 2018-02-23
相关资源
最近更新 更多