Работа по протоколу UDP
Прием и распаковка дейтаграмм производится в обратном порядке, вместо метода send () применяется метод receive (DatagramPacket pack).
В листинге 19.5 показан пример класса Sender, посылающего сообщения, набираемые в командной строке, на localhost, порт номер 1050. Класс Recipient, описанный в листинге 19.6, принимает эти сообщения и выводит их в свой стандартный вывод.
Листинг 19.5. Посылка дейтаграмм по протоколу UDP.
import java.net.*; import java.io.*; class Sender{ private String host; private int port; Sender(String host, int port){ this.host = host; this.port = port; } private void sendMessage(String mes){ try{ byte[] data = mes.getBytes(); InetAddress addr = InetAddress.getByName(host); DatagramPacket pack = new DatagramPacket(data, data.length, addr, port); DatagramSocket ds = new DatagramSocket(); ds.send(pack); ds.close(); }catch(IOException e){ System.err.println(e); } } public static void main(String[] args){ Sender sndr = new Sender("localhost", 1050); for (int k = 0; k < args.length; k++) sndr.sendMessage(args[k]); } }
Листинг 19.6. Прием дейтаграмм по протоколу UDP.
import java.net.*; import java.io.*; class Recipient{ public static void main(String[] args)( try{ DatagramSocket ds = new DatagramSocket(1050); while (true){ DatagramPacket pack = new DatagramPacket(new byte[1024], 1024); ds.receive(pack); System.out.println(new String(pack.getData())); } )catch(Exception e){ System.out.println(e); } } }