【发布时间】:2012-03-01 00:27:54
【问题描述】:
所以我正在制作一个简单的多人在线小程序游戏,并使用多播 UDP 套接字而不是典型的客户端-服务器连接对其进行测试。这并不意味着有效或安全,只是一个实验。唯一的问题是,当我尝试让其他人从他们家加入游戏时,它不会将他们连接到我,但是当我使用两台单独的计算机时,一台连接到无线网络,一台连接到 wifi,它可以无缝运行。他们可以加入自己的游戏并连接到自己的网络,但不能连接到其他人。我在这里错过了什么大事吗?我会贴出相关代码。
InetAddress group;
DatagramPacket packet;
DatagramPacket messagePacket;
MulticastSocket socket;
socket = new MulticastSocket(4446); //random port
group = InetAddress.getByName("228.5.6.7"); //multicast address
socket.joinGroup(group);
//typical code for sending a packet
packet = new DatagramPacket(messageBuf, messageBuf.length, group, 4446);
有什么想法吗?我对网络比较陌生,但发现它是一个有趣的挑战,并希望继续了解它。如果您在帮助我解决这个问题的基础上还有任何其他提示,我们将不胜感激。
【问题讨论】:
-
In order for Udp multicast to work, router must support it? 的可能副本。总之,您和您的伙伴之间至少有一台路由器不支持 UDP 多播。除非您控制所有网络基础设施,否则这很可能是一个无法解决的问题。
-
悲伤的一天 :( 看起来我会在这个时候进行 lanning 哈哈。非常感谢您提供的信息,我会考虑自己提供服务。
-
互联网上的多播从来没有成功过,曾经,在我尝试过的 15-20 次中。我认为,由于 IPv4 地址空间非常“小”,控制大型互联网路由器的人们的普遍共识是,如果人们试图在已经被占用的地址/组上使用自己的应用程序,他们会感到太困惑,他们只是决定不支持。据我所知,您有两个选择:1 - 使用 VPN,因此您可以通过多播,或者 2 - 等到国内连接更普遍地支持 IPv6(1 年?5?10?)并使用任播。