Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java IPv6多播示例_Java_Ipv6_Multicast_Multicastsocket - Fatal编程技术网

Java IPv6多播示例

Java IPv6多播示例,java,ipv6,multicast,multicastsocket,Java,Ipv6,Multicast,Multicastsocket,我已经搜索了如何实现简单ipv6多播示例的示例,但是我只找到了使用ipv4的示例 有谁能提供一个简单的ipv6多播“helloworld”示例吗?这里是一个简单的客户机-服务器示例。顺便说一句,在网络上的多台机器上运行它将使所有机器相互聊天,这有助于测试网络上的自动发现 import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.Multi

我已经搜索了如何实现简单ipv6多播示例的示例,但是我只找到了使用ipv4的示例


有谁能提供一个简单的ipv6多播“helloworld”示例吗?

这里是一个简单的客户机-服务器示例。顺便说一句,在网络上的多台机器上运行它将使所有机器相互聊天,这有助于测试网络上的自动发现

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.MulticastSocket;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class UdpBroadcaster {

private static final Logger LOGGER = LoggerFactory.getLogger(UdpBroadcaster.class);

private static final int PORT = 9876;
private static final String MCAST_ADDR = "FF7E:230::1234";

private static InetAddress GROUP;

public static void main(String[] args) {
    try {
        GROUP = InetAddress.getByName(MCAST_ADDR);
        Thread server = server();
        server.start();
        Thread.sleep(3000);
        Thread client = client();
        client.start();
        client.join();
    } catch (Exception e) {
        LOGGER.error("Usage : [group-ip] [port]");
    }
}

private static Thread client() {
    return new Thread(new Runnable() {
        public void run() {
            MulticastSocket multicastSocket = null;
            try {
                multicastSocket = new MulticastSocket(PORT);
                multicastSocket.joinGroup(GROUP);
                while (true) {
                    try {
                        byte[] receiveData = new byte[256];
                        DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
                        multicastSocket.receive(receivePacket);
                        LOGGER.info("Client received from : " + receivePacket.getAddress() + ", " + new String(receivePacket.getData()));
                    } catch (Exception e) {
                        LOGGER.error(null, e);
                    }
                }
            } catch (Exception e) {
                LOGGER.error(null, e);
            } finally {
                multicastSocket.close();
            }
        }
    });
}

private static Thread server() {
    return new Thread(new Runnable() {
        public void run() {
            DatagramSocket serverSocket = null;
            try {
                serverSocket = new DatagramSocket();
                try {
                    while (true) {
                        byte[] sendData = new byte[256];
                        DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, GROUP, PORT);
                        serverSocket.send(sendPacket);
                        ThreadUtilities.sleep(1000);
                    }
                } catch (Exception e) {
                    LOGGER.error(null, e);
                }
            } catch (Exception e) {
                LOGGER.error(null, e);
            }
        }
    });
}

}
希望有帮助。
在Java中,IPv6程序和IPv4程序之间的唯一区别是IP地址。在这种情况下,在加入组和向组发送数据时,必须使用IPv6样式的多播地址。其他一切都一样