编程语言
首页 > 编程语言> > Java中的组播

Java中的组播

作者:互联网

我正在尝试编写一个简单的多播试用版.

我使用了标准代码(发送者和接收者).

我尝试了一些不同的标准代码.似乎接收代码卡在了接收器上(好像没有接收任何东西).

接收方:

        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接收,但发送到localhost.如果可行,则问题出在您的路由器上,因为它不支持多播.如果仍然无法使用,则为IP地址.尝试在233.x.x.x-239.x.x.x范围内进行操作.

我在计算机上运行了您的代码,它可以正常运行,并且如果我将发送地址更改为localhost时也可以运行.听起来这是路由器的问题,而不是代码的问题.

标签:multicast,java
来源: https://codeday.me/bug/20191023/1913399.html