Java Tutorial/Network/MulticastSocket

Материал из Java эксперт
Перейти к: навигация, поиск

Joining a Multicast Group

   <source lang="java">

import java.net.InetAddress; import java.net.MulticastSocket; public class Main {

 public static void main(String[] argv) throws Exception {
   String groupName = "groupName";
   int port = 1024;
   MulticastSocket msocket = new MulticastSocket(port);
   InetAddress group = InetAddress.getByName(groupName);
   msocket.joinGroup(group);
 }

}</source>





Multicast Sender

   <source lang="java">

import java.net.DatagramPacket; import java.net.InetAddress; import java.net.MulticastSocket; public class MainClass {

 public static void main(String[] args) throws Exception {
   int port = 0;
   byte ttl = (byte) 1;
   InetAddress ia = InetAddress.getByName("127.0.0.1");
   byte[] data = "Here"s some multicast data\r\n".getBytes();
   DatagramPacket dp = new DatagramPacket(data, data.length, ia, port);
   MulticastSocket ms = new MulticastSocket();
   ms.joinGroup(ia);
   for (int i = 1; i < 10; i++) {
     ms.send(dp, ttl);
   }
   ms.leaveGroup(ia);
   ms.close();
 }

}</source>





Multicast Sniffer

   <source lang="java">

import java.net.DatagramPacket; import java.net.InetAddress; import java.net.MulticastSocket; public class MainClass {

 public static void main(String[] args) throws Exception {
   int port = 0;
   InetAddress group = InetAddress.getByName("127.0.0.1");
   MulticastSocket ms = new MulticastSocket(port);
   ms.joinGroup(group);
   byte[] buffer = new byte[8192];
   while (true) {
     DatagramPacket dp = new DatagramPacket(buffer, buffer.length);
     ms.receive(dp);
     String s = new String(dp.getData());
     System.out.println(s);
   }
   // ms.leaveGroup(group);
   // ms.close();
 }

}</source>





Receiving from a Multicast Group

   <source lang="java">

import java.net.DatagramPacket; import java.net.MulticastSocket; public class Main {

 public static void main(String[] argv) throws Exception {
   MulticastSocket msocket = new MulticastSocket(9999);
   byte[] inbuf = new byte[1024];
   DatagramPacket packet = new DatagramPacket(inbuf, inbuf.length);
   msocket.receive(packet);
   // Data is now in inbuf
   int numBytesReceived = packet.getLength();
 }

}</source>





Sending to a Multicast Group

   <source lang="java">

import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class Main {

 public static void main(String[] argv) throws Exception {
   byte[] outbuf = new byte[1024];
   int port = 1234;
   DatagramSocket socket = new DatagramSocket();
   InetAddress groupAddr = InetAddress.getByName("8.1.2.3");
   DatagramPacket packet = new DatagramPacket(outbuf, outbuf.length, groupAddr, port);
   socket.send(packet);
 }

}</source>