Исходники
Статьи
Языки программирования
.NET Delphi Visual C++ Borland C++ Builder C/С++ и C# Базы Данных MySQL MSSQL Oracle PostgreSQL Interbase VisualFoxPro Веб-Мастеру PHP HTML Perl Java JavaScript Протоколы AJAX Технология Ajax Освоение Ajax Сети Беспроводные сети Локальные сети Сети хранения данных TCP/IP xDSL ATM Операционные системы Windows Linux Wap Книги и учебники
Скрипты
Магазин программиста
|
Сокеты и JavaВам захотелось сделать свой чат ? Вы уже поняли, что Вам прийдётся изучить принцып сокетов? Ну тогда смею предложить Вам несколько простых шагов по созданию соединения между компьютерами в интернете по средствам Java. Для начала не забудьте добавить в исходный код вашей программы java.net и java.io пакеты. Вот три основных этапа создания нашего приложения:
Инициализация клиентского сокета выглядит следующим образом: 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(); Я уверен, что найдётся много людей, которые не поймут эту статью. Но если вы прочитали и не поняли как сделать простой чат, то вероятно вам потребуется ещё раз прочитать руководство для начинающих :). |
Форум Программиста
Новости Обзоры Магазин Программиста Каталог ссылок Поиск Добавить файл Обратная связь Рейтинги
|