Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
Второй метод возвращает адрес сервера, чье имя передается в качестве параметра. Это может быть как 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();