学习记录,侵权必删
一、简述
UDP可以进行多播,多播受到电脑策略的限制
二、示例代码
public class MuticastReceiverTest {
public static void main(String[] args) throws Exception {
final InetAddress inetAddress = InetAddress.getByName("224.1.1.1");
final int port = 44444;
for (int i = 0; i < 10; i++) {
new Thread("Thread NAME" +i){
@Override
public void run() {
try {
MulticastSocket multicastSocket = new MulticastSocket(port);
multicastSocket.joinGroup(inetAddress);
byte[] msgData = new byte[512];
DatagramPacket receivePacket = new DatagramPacket(msgData, msgData.length);
multicastSocket.receive(receivePacket);
System.out.println("receive Thread ==>>"+Thread.currentThread().getName()+";data is-->>"+new String(receivePacket.getData()));
} catch (IOException ex) {
Logger.getLogger(MuticastReceiverTest.class.getName()).log(Level.SEVERE, null, ex);
}
}
}.start();
}
Thread.sleep(5000);
MulticastSocket multicastSocketTemp = new MulticastSocket();
multicastSocketTemp.setTimeToLive(32);
byte[] sendData = "hello".getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length,inetAddress,port);
multicastSocketTemp.send(sendPacket);
}
}
三、总结
广播的方式通过代码观察可以发现,只要发送一条信息,就可以被多个线程所接收到,这个和消息推送有点类似,点对点,多对多。
需要注意的是使用多广播,地址应该是基于一个波段的,不能填写127.0.0.1这种形式,需按照多播规范
需要注意的是使用多广播,地址应该是基于一个波段的,不能填写127.0.0.1这种形式,需按照多播规范
多播和单播