我正在尝试编写一个简单的多播试验。
我使用了标准代码(发送者和接收者)。
我尝试了一些不同的标准代码。看来接收代码停留在接收状态(就好像没有接收到任何东西一样)。
接收端:
byte[] b = new byte[3];
DatagramPacket dgram = new DatagramPacket(b, b.length);
MulticastSocket socket =
new MulticastSocket(4545); // must bind receive side
socket.joinGroup(InetAddress.getByName("226.100.100.125"));
while(true) {
socket.receive(dgram); // blocks until a datagram is received
System.err.println("Received " + dgram.getLength() +
" bytes from " + dgram.getAddress());
dgram.setLength(b.length); // must reset length field!
}
发送方:
DatagramSocket socket = new DatagramSocket();
byte[] b = new byte[]{(byte)1,(byte)5,(byte)3};
DatagramPacket dgram;
dgram = new DatagramPacket(b, b.length,
InetAddress.getByName("226.100.100.125"), 4545);
System.err.println("Sending " + b.length + " bytes to " +
dgram.getAddress() + ':' + dgram.getPort());
while(true) {
System.err.print(".");
socket.send(dgram);
Thread.sleep(1000);
}
我的代码有什么问题吗?
*我也尝试了很多不同的IP*
谢谢您的帮助。
尝试从同一 IP 接收但发送到本地主机。如果这有效,那么问题出在您的路由器上,因为它不支持多播。如果这仍然不起作用,那么就是 IP 地址的问题。尝试 233.x.x.x - 239.x.x.x 范围内的内容。
我在我的计算机上运行了您的代码,它按原样工作正常,如果我将发送地址更改为本地主机,它也可以工作。听起来这是您的路由器的问题,而不是您的代码的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)