python中的广播套接字服务器[关闭]

Posted

技术标签:

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

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

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

【问题讨论】:

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

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

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

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

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于python中的广播套接字服务器[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

socket发送UDP广播实现聊天室功能

socket发送UDP广播实现聊天室功能

Python套接字服务器读取客户端的多命令[关闭]

Java中的广播消息

为啥在从服务器接收到所有数据后客户端套接字连接没有关闭?

实现 SSL 证书的 Python 套接字 [关闭]