【问题标题】:Broadcasting socket server in python [closed]python中的广播套接字服务器[关闭]
【发布时间】:2013-10-02 16:18:34
【问题描述】:

我正在构建一个多人游戏,所以一旦服务器启动,我想连续广播服务器名称,以便客户端可以知道有一些服务器正在运行。我不想提供 IP 地址和端口号来连接服务器。谁能帮我广播服务器名称。

  • 它是一个应用而不是网络应用。

【问题讨论】:

  • “广播”是什么意思?您可以在本地网络上广播消息,但没有“将此消息广播到整个互联网”(这是一件好事,没有或者我们只看到过小猫图片和伟哥广告)
  • 但是,如何在不提供 IP 的情况下连接到服务器?
  • 使用 DNS 怎么样?
  • 就像我打开我的客户端应用程序一样。我应该得到在网络中运行的服务器列表。
  • 好的。你说的是局域网。你可以试试 SSDP (en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol)

标签: python sockets python-2.7 socketserver python-sockets


【解决方案1】:

SO 中有一个自动回复的问题已经在讨论这个问题:How to make a server discoverable to LAN clients

您可以使用相同的技术来请求本地网络中的服务器。

视频游戏中的方法 (YMMV) 是:

  • 服务器启动并绑定到广播。
  • 客户端启动并绑定到广播。
  • 客户端发送请求服务器的广播消息。
  • 服务器从客户端接收广播消息并回复另一个关于它们的广播(如果他们感到偏执,他们可能会在一两秒后重新发送该消息)。
  • 客户端等待几秒,记录下所有响应的服务器信息。
  • 客户端显示服务器列表并要求玩家选择一个。
    • 也许他们希望在玩家访问服务器列表页面期间继续并行执行上一步。
  • 客户端从广播中解除绑定并尝试连接到玩家选择的服务器。
    • 通常也可以选择端口,但游戏中默认提供此连接的默认端口。这样,如果端口未更改,您甚至不需要在消息中广播服务器身份...
  • 每个人都停止用广播消息使网络饱和! :P

要通过 Internet 发现服务器,您需要某种通知服务。网络中有很多选项可用作通用发现服务,自 android 网络游戏时代以来就很流行。

【讨论】:

    【解决方案2】:

    如果您的服务器位置不变,为什么不在代码中定义服务器 IP 地址并让脚本连接到它?用户将永远不必看到您服务器的 IP 地址。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2012-02-23
      相关资源
      最近更新 更多