Программирование на JAVA

Навигация

Лекция 1. Что такое Java? История создания

Лекция 2. Основы объектно-ориентированного программирования

Лекция 3. Лексика языка

Лекция 4. Типы данных

Лекция 5. Имена. Пакеты

Лекция 6. Объявление классов

Лекция 7. Преобразование типов

Лекция 8. Объектная модель в Java

Лекция 9. Массивы

Лекция 10. Операторы и структура кода. Исключения

Лекция 11. Пакет java.awt

Лекция 12. Потоки выполнения. Синхронизация

Лекция 13. Пакет java.lang

Лекция 14. Пакет java.util

Лекция 15. Пакет java.io

Лекция 16. Введение в сетевые протоколы

Реклама :





Второй метод возвращает адрес сервера, чье имя передает­ся в качестве параметра. Это может быть как DNS-имя, так и числовой IP, записанный в виде текста, например, "67.11.12.101". Наконец, третий ме­тод определяет все I Р-адреса указанного сервера.

Для работы с TCP-протоколом используются классы Socket и ServerSocket. Первым создается ServerSocket - сокет на стороне сервера. Его простейший конструктор имеет только один параметр — номер порта, на котором будут приниматься входящие запросы. После создания вызыва­ется метод accept(), который приостанавливает выполнение программы и ожидает, пока какой-нибудь клиент не инициирует соединение. В этом случае работа сервера возобновляется, а метод возвращает экземпляр класса Socket для взаимодействия с клиентом:

try {

ServerSocket ss = new ServerSocket(3456); Socket client=ss.accept(); // Метод не возвращает

//управление, пока не подключится клиент } catch (lOException e) { e.printStackTrace();

}

Клиент для подключения к серверу также использует класс Socket. Его простейший конструктор принимает два параметра - адрес сервера (в виде строки, или экземпляра InetAddress) и номер порта. Если сервер принял запрос, то сокет конструируется успешно и далее можно воспользоваться методами getlnputStream() или getOutputStream().

try {

Socket s = new Socket("localhost", 3456); InputStream is = s.getlnputStream(); is.read();

} catch (UnknownHostException e) {

e.printStackTrace(); } catch (lOException e) {

e. printStackTrace( ) ;

}

Обратите внимание на обработку исключительной ситуации UnknownHostException, которая будет генерироваться, если виртуальная машина с помощью операционной системы не сможет распознать указанный адрес сервера в случае, если он задан строкой. Если же он задан экземпляром InetAddress, то эту ошибку надо обрабатывать при вызове статических методов данного класса.

На стороне сервера класс Socket используется точно таким же образом - через методы getlnputStreamQ и getOutputStream(). Приведем более полный пример:

import java.io.*; importjava.net.*; public class Server {

public static void main(String args[]) { try{

ServerSocket ss = new ServerSocket(3456); System, out. println("Waiting..."); Socket client=ss.accept(); System.out.println("Connected"); client.getOutputStream().write( 10); client. closeQ; ss.close(); } catch (lOException e) { e.printStackTrace();