Java中的UDP協議提供了廣播和多播功能,可以在網絡上快速傳遞消息,是一種常見的通信方式。下面介紹一下UDP廣播和多播的相關知識。
UDP廣播
try { DatagramSocket socket = new DatagramSocket(); socket.setBroadcast(true); byte[] data = "Hello World!".getBytes(); DatagramPacket packet = new DatagramPacket(data, data.length, InetAddress.getByName("255.255.255.255"), 9999); socket.send(packet); socket.close(); } catch (Exception e) { e.printStackTrace(); }
UDP廣播是一種向整個網絡中所有主機發送消息的通信方式。在代碼中,首先創建了一個DatagramSocket對象,調用setBroadcast方法將套接字設置為廣播模式。然后創建一個消息包,設置目標地址為“255.255.255.255”,表示發送到整個網絡中的所有主機。最后通過send方法發送消息。
UDP多播
try { InetAddress group = InetAddress.getByName("224.0.0.1"); MulticastSocket socket = new MulticastSocket(); byte[] data = "Hello World!".getBytes(); DatagramPacket packet = new DatagramPacket(data, data.length, group, 9999); socket.send(packet); socket.close(); } catch (Exception e) { e.printStackTrace(); }
UDP多播是一種向指定組中所有成員發送消息的通信方式。在代碼中,首先創建一個InetAddress對象,表示多播組的地址,這里使用了224.0.0.1作為示例地址。然后創建一個MulticastSocket對象,將消息發送到多播組的地址和端口。最后通過send方法發送消息。
需要注意的是,在使用UDP多播時需要將套接字加入多播組:
MulticastSocket socket = new MulticastSocket(9999); InetAddress group = InetAddress.getByName("224.0.0.1"); socket.joinGroup(group);
以上代碼將套接字加入了多播組,這樣才能收到發往此組的消息。