Иллюстрированный самоучитель по Java



              

Работа по протоколу UDP - часть 2


ds.close ()

Прием и распаковка дейтаграмм производится в обратном порядке, вместо метода 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 j ava.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); 

}




Содержание  Назад