Программирование для сокетов

UDPServer

 

 

Другая программа (сервер) создает сокет и обслуживает запросы клиента (листинг 2).

1.               import java.net.*;

2.               import java.io.*;

3.               public class UDPServer{

4.               public static void main(String args[]) {

5.               DatagramSocket aSocket = null;

6.               try{

7.               aSocket = new DatagramSocket(7777); // create socket at port

8.               byte[] buffer = new byte[1000];

9.               while(true){

10.          DatagramPacket request = new DatagramPacket(buffer, buffer.length);

11.          aSocket.receive(request);

12.          DatagramPacket reply =

13.          new DatagramPacket(request.getData(), request.getLength(),

14.          request.getAddress(), request.getPort());

15.          aSocket.send(reply);

16.          }

17.          } catch (SocketException e) {System.out.println("Socket: " + e.getMessage());

18.          // socket creation failed

19.          } catch (IOException e) {System.out.println("IO: " + e.getMessage());

20.          } finally {if(aSocket != null) aSocket.close();}

21.          }

22.          }

Листинг 2. Сервер

Компиляция

В том случае, когда при установке пакета jdk в системе были установлены соответствующие пути, для компиляции примера нужно выполнить следующие действия:

·                 перейти в каталог, где сохранены файлы UDPClient.java и UDPServer.java;

·                 набрать в командной строке команду компиляции javac *.java.

После компиляции в текущем каталоге должны появиться два файла: UDPClient.class и UDPServer.class, которые представляют собой наши классы, откомпилированные в байт-код.

Запуск приложения

Первым запускается сервер, для его запуска необходимо, находясь в каталоге, где лежат исполняемые файлы, выполнить команду:

java UDPServer.
Результат работы команды приведен ниже на рис.1.1.
  

Рис. 1 Вывод сервера

Рис. 2 Вывод клиента

После запуска сервер переходит в режим ожидания сообщений от клиента. Поскольку нами не предусмотрено никакого механизма останова сервера, выгрузить его может либо произошедшая ошибка, либо насильственное прерывание процесса.

Клиент запускается следующим образом:

java UDPClient Hello,Server! 127.0.0.1

Первый параметр определяет строку, которая будет передана серверу, второй - адрес узла, на котором запущен сервер. В данном случае и клиент, и сервер запущены на одной машине, поэтому в качестве адреса используется адрес 127.0.0.1 (localhost).

После запуска клиент отправляет строку на сервер, печатает ее в консоли и завершает работу (рис. 2). Сервер же продолжает ожидать очередное подключение следующего клиента (рис. 1).

Сайт создан по технологии «Конструктор сайтов e-Publish»