【问题标题】:How to send data between two clients如何在两个客户端之间发送数据
【发布时间】:2019-11-05 18:06:37
【问题描述】:

我正在制作一个带有多人模式的简单游戏。我需要以某种方式在一个玩家和另一个玩家之间发送数据。我找不到在两个客户端之间传输数据的方法。有没有办法通过服务器转发它们?

我正在使用socketserver 库来接受连接。这是我处理连接的方式。

def handle(self):
    data = self.request.recv(BUFFSIZE).decode("utf-8")
    print("Received connection")
    print(data)

【问题讨论】:

  • 不,我正在寻找一种在涉及服务器的两个客户端之间发送数据的方法,最好不是很难的方法
  • 也许使用 Redis 或 0MQ 发布/订阅消息?
  • 您能否提及您的服务器实现?
  • 我已经附上了我的服务器实现中的所有内容,你需要它的哪一部分?

标签: python python-3.x sockets networking socketserver


【解决方案1】:

来自 90 年代的剧本:其中一个客户端可以是服务器;其他客户端(在同一 LAN 上)连接到它。

由于 NAT,它在 LAN 之外无法正常工作。

通常,您需要在某个地方运行一个专用服务器,让用户连接,并在他们之间路由消息。

您自然会希望在服务器上运行所有游戏逻辑,而只将状态显示和用户输入留给客户端。

此外,一个服务器可以托管多个游戏。

在实现方面,标准库中的套接字服务器将是一个好的开始;来自同一个标准库的 HTTP 服务器,更容易开始。

【讨论】:

  • 我有一个专用服务器来托管所有内容,但我需要一种方法来实现客户端之间的消息转发
  • 一个客户端如何知道哪个客户端应该接收消息? 应该它甚至关心,还是服务器应该代替?这取决于您的游戏设计。
  • 客户端发送昵称,其他拥有该昵称的人应该收到该数据
  • 所以我会让服务器保留昵称和客户端的映射。接收来自客户端 A 的要发送给客户端 B 的消息。查找具有昵称 B 的客户端,并将消息发送给该客户端。
  • 我找不到一种方法来编写两个客户端将同时连接并且服务器将在它们之间传输数据的方法
猜你喜欢
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-03
  • 1970-01-01
  • 2022-06-24
相关资源
最近更新 更多