Исходный текст приложения DatagramClient
В листинге 3.8 приведен исходный текст приложения DatagramClient.
Листинг 3.8. Файл DatagramClient\DatagramClient.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 DatagramClient
{
// -------------------------------------------------------
// main
// Метод, получающий управление при запуске приложения
// -------------------------------------------------------
public static void main(String args[])
{
// Массив для ввода строки с клавиатуры
byte bKbdInput[] = new byte[256];
// Размер введенной строки
int length;
// Рабочая строка
String str;
// Сокет клиента
DatagramSocket s;
// Передаваемый пакет
DatagramPacket pout;
try
{
// Выводим строку приглашения
System.out.println(
"Datagram Socket Client Application" +
"\nEnter any string or 'quit' to exit...");
}
catch(Exception ioe)
{
// При возникновении исключения выводим его описание
// на консоль
System.out.println(ioe.toString());
}
try
{
// Получаем адрес локального узла
InetAddress OutAddress = InetAddress.getLocalHost();
// Создаем сокет с использованием любого
// свободного порта
s = new DatagramSocket();
// Создаем передаваемый пакет
pout = new DatagramPacket(bKbdInput, bKbdInput.length,
OutAddress, 9998);
// Цикл передачи команд серверу
while(true)
{
// Читаем строку команды с клавиатуры
length = System.in.read(bKbdInput);
// Если строка не пустая, обрабатываем ее
if(length != 1)
{
// Преобразуем строку в формат String
str = new String(bKbdInput, 0);
// Обрезаем строку, удаляя символ конца строки
StringTokenizer st;
st = new StringTokenizer(str, "\n");
str = new String((String)st.nextElement());
// Выводим передаваемую строку команды
// на консоль для контроля
System.out.println("> " + str);
// Посылаем пакет серверу
s.send(pout);
// Если введена команда '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());
}
}
}