首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查找我的多人游戏主机IP

如何查找我的多人游戏主机IP
EN

Stack Overflow用户
提问于 2012-06-22 02:16:07
回答 4查看 2.4K关注 0票数 1

我正在写一个简单的多人2d游戏,4人乒乓确切地说。

当游戏开始时,有一个开始菜单,您可以在其中选择托管或加入游戏。4个玩家中的一个必须主持,其他3个将加入。我可以在房间的另一边对我的其他三个伙伴大叫,告诉他们我的ip和端口号,但我想知道是否有方法可以搜索主机。对我来说,这听起来是不可能的,互联网上有数百万台电脑,我怎么可能找到那台在等我电话的电脑。我知道StarCraft在90年代中期就这样做过。

关于如何实现这一点,我有一个理论。也就是说,使用sql之类的数据库来跟踪当前的主机。这将是数据库的唯一用途,因为我没有保存用户统计数据或任何东西。

有没有更好的方法来做这件事?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-22 02:28:40

假设您在LAN上,您可以使用UDP来发现客户端。

如果客户端充当主机,它将侦听UDP数据报。如果它收到一个包含发现请求的请求,它会使用其IP、端口和客户端需要的任何其他信息进行响应。(您可以包括连接的播放器数量等。)

如果客户端充当客户端,那么它会在“加入游戏”屏幕上发送发现数据报。当主机响应时,它们会被添加到选择列表中。

当用户选择服务器时,通过IP连接,就像您已经使用在发现响应中接收到的IP和端口所做的那样。

Lidgren network library提供了一些可能有用的很好的发现功能。

如果你不在局域网上,你需要某种全球可访问的中央目录--可能是在一个网站上。当有人开始一款新游戏时,他们的客户端会在目录中注册他们的IP,等等。然后,客户端将轮询该站点以获得服务器列表,该列表随后将用于填充“加入游戏”屏幕。

值得注意的是,服务器/目录方法在LAN环境中的效果与在Internet上的效果一样好。UDP更加灵活,因为它不要求客户端具有任何目录提供商的知识,因为它基本上是“在房间的另一端”为您叫喊。

票数 3
EN

Stack Overflow用户

发布于 2012-06-22 02:23:58

您需要一个中央代理来识别哪些是托管的,哪些是参与的。

你可能也想让游戏流量通过同一主机,因为打开端口和在其他防火墙后面的远程计算机之间传递直接流量等有很多问题。另外,如果你保持流量集中,你可以对作弊进行一些检查和平衡。

票数 2
EN

Stack Overflow用户

发布于 2012-06-22 02:20:31

使用互联网上的某种类型的服务器(web/ftp),您可以在其中写入文件。当你托管一个游戏时,在文件中写下IP和端口。当客户端想要加入游戏时,函数可以检查文件并读取它。这只是脑海中浮现的第一件事。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11144276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档