Microsoft Visual J++. Создание приложений и аплетов на языке Java

Исходный текст приложения DatagramServer


Исходный текст приложения DatagramServer вы найдете в листинге 3.7.

Листинг 3.7. Файл DatagramServer\DatagramServer.java

// =========================================================

// Использование датаграммных сокетов

// Приложение сервера

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

// =========================================================



import java.io.*;

import java.net.*;

import java.util.*;

public class DatagramServer

{

  // -------------------------------------------------------

  // main

  // Метод, получающий управление при запуске приложения

  // -------------------------------------------------------

  public static void main(String args[])

  {

    // Массив для ввода строки с клавиатуры

    byte bKbdInput[] = new byte[256];

    // Буфер для чтения команд

    byte buf[] = new byte[512];

    // Сокет сервера

    DatagramSocket s;

    // Принимаемый пакет

    DatagramPacket pinp;

    // Адрес узла, откуда пришел принятый пакет

    InetAddress SrcAddress;

    // Порт, откуда пришел принятый пакет

    int SrcPort;

    try

    {

      // Выводим строку приглашения

      System.out.println(

        "Datagramm Socket Server Application");

    }

    catch(Exception ioe)

    {

      // При возникновении исключения выводим его описание

      // на консоль

      System.out.println(ioe.toString());

    }

   

    try

    {

      // Создаем сокет сервера

      s = new DatagramSocket(9998);

      // Создаем пакет для приема команд

      pinp = new DatagramPacket(buf, 512);

      // Цикл обработки команд, полученных от клиента

      while(true)

      {

        // Принимаем пакет от клиента

        s.receive(pinp);

        // Получаем адрес узла, приславшего пакет

        SrcAddress = pinp.getAddress();


        // Получаем порт, на котором был передан пакет

        SrcPort    = pinp.getPort();

        // Отображаем принятую команду на консоли сервера

        // Формируем строку из принятого блока

        String str = new String(buf, 0);

        // Обрезаем строку, удаляя символ конца строки

        StringTokenizer st;

        st   = new StringTokenizer(str, "\r\n");

        str = new String((String)st.nextElement());

        // Выводим строку команды на консоль

        System.out.println(">  " + str + " < " +

          "port: " + SrcPort);

        // Если пришла команда 'quit', прерываем цикл

        if(str.equals("quit"))

          break;

      }

      // Закрываем сокет сервера

      s.close();

    }

    catch(Exception ioe)

    {

      System.out.println(ioe.toString());

    }

   

    try

    {

      System.out.println(

        "Press <Enter> to terminate application...");

      System.in.read(bKbdInput);

    }

    catch(Exception ioe)

    {

      System.out.println(ioe.toString());

    }

  }

}


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