Студия web-дизайна Хостмэйк
Наши работыКонтактыО компанииОтзывыГлоссарийСтатьи

Сокеты и Java

Статьи Программирование на Java

Вам захотелось сделать свой чат? Вы уже поняли, что Вам придется изучить принцип сокетов? Ну тогда смею предложить Вам несколько простых шагов по созданию соединения между компьютерами в Интернете по средствам Java. Для начала не забудьте добавить в исходный код вашей программы java.net и java.io пакеты.


Вот три основных этапа создания нашего приложения:



  • Сервер (Tim) - Создаём новый сокет, ожидающий запросы от клиента на 4444 порту.

  • Клиент (Chris) - Создаём новый сокет, который будет конектиться к Tim на 4444 порт.

  • Начинаем передачу данных между клиентом и сокетом.


Инициализация клиентского сокета выглядит следующим образом:


Socket clientSocket = null;

clientSocket = new Socket("Tim", 4444);


Этот сокет конектиться к компьютеру, названному нами Tim на 4444 порт. Обычно вместо названия Tim используют IP адресс этого компьютера. Но перед тем как мы попытаемся установить связь с серверо, необходимо, чтобы сервер ожидал наш запрос на установление связи, для это создади у сервера соке, и переведём его в режим ожидания входящих запросов:


Socket serverSocket = null;

serverSocket = new Socket(4444); //Notice no user to connect to this time.

serverSocket.accept(); //Accept a client.


Теперь приступим к передаче данных между Клиентом и Сервером.


Задача серверного сокета заключается в том, чтобы за один сеанс связи принять данные от клиента и сразу же передать клиенту ответ. Чтобы произвести такую операцию необходимо объявить потоки PrintWriter для вывода и поток BufferedReader для ввода. Причём объявить потоки необходимо как на сервере, так и на клиенте. Для простоты я покажу как это делается на клиенте:


PrintWriter out = null;

BufferedReader in = null;

Socket clientSocket = null;


clientSocket = new Socket("Tim", 4444);

//get the socket's ouput

out=new PrintWriter(clientSocket.getOutputStream(), true); 

//get the socket's input

in=new BufferedReader(new inputStreamReader(clientSocket.getInputStream()));


Наверное я переусердствовал с цветами :) Теперь PrintWriter out будет выходным потоком, при записи в который, данные будут направляться в сокет. Если теперь выполнить out.println("Hello"), то строка hello будет отправлена серверу. Ну и в конце осталось посмотреть как сделать, чтобы приём информации на сервере шёл непрерывно:


PrintWriter out = null;

BufferedReader in = null;

Socket clientSocket = null;

String fromServer;


clientSocket = new Socket("Tim", 4444);

out = new PrintWriter(clientSocket.getOutputStream(), true);

in = new BufferedReader(new inputStreamReader( clientSocket.getInputStream()));


// Цикл до тех пор, пока есть поступающие сообщения

while ((fromServer = in.readLine()) != null) { 

//Отображаем полученное сообщение

System.out.println("Server: " + fromServer); 

}


out.close();

in.close();

clientSocket.close();


Я уверен, что найдётся много людей, которые не поймут эту статью. Но если вы прочитали и не поняли как сделать простой чат, то вероятно вам потребуется ещё раз прочитать руководство для начинающих :).


Дата: 18.12.2003

Источник: http://sources.ru

16.02.2006

Телефон

+7 8636 237-836

Поиск

VSESMI.ru — новости в СМИ.
Один из больших по объему информации проектов, работающих под управлением HostCMS.

Tur-Hotel.ru — отзывы об отелях
На сайте представлено описание отелей, рейтинг отелей с отзывами туристов.