| |
редаваемую строку команды
// на консоль для контроля
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 to terminate application...");
System.in.read(bKbdInput);
}
catch(Exception ioe)
{
System.out.println(ioe.toString());
}
}
}
Описание исходного текста приложения DatagramClient
Внутри метода main определен массив bKbdInput, предназначенный для хранения
данных, введенных с клавиатуры, переменная length, в которой хранится размер
этих данных, рабочая строка str класса String, датаграммный сокет s и пакет
pout класса DatagramPacket.
Прежде всего приложение определяет адрес узла, на котором оно выполняется,
вызывая метод getLocalHost:
InetAddress OutAddress = InetAddress.getLocalHost();
Этот адрес будет использован для формирования передаваемого пакета данных.
Затем клиент создает датаграммный сокет, применяя для этого конструктор без
параметров:
s = new DatagramSocket();
Напомним, что в этом случае для сокета выделяется любой свободный порт.
На следующем шаге приложение формирует передаваемый пакет, вызывая
конструктор класса DatagramPacket:
pout = new DatagramPacket(bKbdInput, bKbdInput.length,
OutAddress, 9998);
Этому конструктору указывается адрес массива, содержащего введенные с
клавиатуры данные, размер этого массива, адрес локального узла, на который
нужно передать пакет, и номер порта серверного приложения.
Теперь все готово для запуска цикла передачи команд от клиента к серверу.
В этом цикле выполняется чтение строки с клавиатуры, причем размер
прочитанной строки сохраняется в переменной length:
length = System.in.read(bKbdInput);
Далее, если строка не состоит из одного лишь символа перехода на новую
строку, она отображается на косоли и посылается серверу методом send:
s.send(pout);
После того как пользователь введет строку “quit”, цикл завершается. Вслед за
этим приложение закрывает датаграммный сокет:
s.close();
Связь приложений Java с расширениями сервера Web
Итак, мы расказали вам, как приложения Java могут получать с сервера Web для
обработки произвольные файлы, а также как они могут передавать данные друг
другу с применением потоковых или датаграммных сокетов.
Однако наиболее впечатляющие возможности открываются, если организовать
взаимодействие между приложением Java и расширением сервера Web, таким как CGI
или ISAPI. В этом случае приложения или аплеты Java могли бы посылать
произвольные данные расширению сервера Web для обработки, а затем получать
|
|