首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无广播局域网上的网络发现

无广播局域网上的网络发现
EN

Stack Overflow用户
提问于 2016-07-05 09:05:11
回答 3查看 1.2K关注 0票数 2

短版本:当广播被禁用时,您建议如何将客户端连接到同一本地网络上的服务器,而不手动进入ip?

进一步详细介绍:我正在为孩子们开发一款教育多人游戏。许多学校似乎出于安全原因而封锁广播。孩子们会很小,所以他们可能很难,而且很容易不得不手动输入IP。他们都在同一个房间里,都会看到服务器屏幕。这个游戏是用统一(C#)制作的。

潜在解决方案:下面是我的想法:

  • 将本地服务器和客户端连接到外部服务器,通过外部服务器通过客户端通信本地服务器ip,然后直接连接并断开与服务器的连接。不理想,因为额外的托管费用。
  • 定期向子网上的所有ips发送定期UDP消息?这可能会被任何一个像样的防火墙拦截,对吧?
  • 在服务器上放置一个QR代码,让孩子们用客户端应用程序拍照,然后让它以这种方式连接起来?可能更麻烦了。
  • 让服务器播放与客户端正在监听的数字相对应的随机音调?(演讲者可能并不总是在工作)

听起来第一个是最理智、最容易解决的办法。在这种情况下,你还有其他的想法可以尝试吗?

EN

回答 3

Stack Overflow用户

发布于 2016-07-07 19:13:37

UDP组播可以吗?如果是,那么一个常见的解决方案是,所有参与者都加入同一个多播组,服务器在一个众所周知的端口上监听。如果客户端想知道服务器的地址,它将一个分组发送到多播组,多播组由客户端接收并以另一个数据包应答,然后客户端可以使用该数据包来确定服务器地址。此外,服务器还可以通过向多播组发送合适的消息来定期宣布它们的存在。

票数 1
EN

Stack Overflow用户

发布于 2016-07-05 09:33:06

我能想到的是所有设备之间的临时通信协议。假设你有一个服务器和10个客户端。所有设备都应该运行绑定到固定端口(比如9999 )的服务(例如服务器发现)。现在,每当客户端想连接到服务器而不知道IP时,它就会启动扫描。循环通过不同的IP并尝试连接到9999。如果它成功命中,它将请求服务器IP。如果它成功地命中了服务器,它将得到IP,因为服务器知道它自己的IP,并且客户机将在缓存中维护服务器IP。如果客户碰到了另一个客户。它可以请求服务器IP。它的另一个客户知道的IP,它将分享信息,其他谢绝。我同意有大量的开销,但我认为这将是不健全的,并将减少每次打印QR的成本。

票数 0
EN

Stack Overflow用户

发布于 2017-05-18 17:43:07

在本地网络上,流量是直接从主机到主机。我不明白是哪种设备阻塞了本地广播。

如果局域网上没有太多的对等点(少于100 ),我认为udp广播可以正常工作,而且不会污染网络。

为了了解你的“池塘”,我建议你闻闻当地的交通。有很多广播: arp,windows,ipp,dropbox.

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

https://stackoverflow.com/questions/38199340

复制
相关文章

相似问题

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