1. Вы находитесь в архивной версии форума xaker.name. Здесь собраны темы с 2007 по 2012 год, большинство инструкций и мануалов уже неактуальны.
    Скрыть объявление

Сокеты и Java

Тема в разделе "Разное", создана пользователем lytgeygen, 27 июн 2009.

  1. lytgeygen

    lytgeygen pacifiste maniaque ..::V.I.P::..

    Регистрация:
    13 окт 2008
    Сообщения:
    431
    Симпатии:
    244
    Баллы:
    0
    Вам захотелось сделать свой чат ? Вы уже поняли, что Вам прийдётся изучить принцып сокетов? Ну тогда смею предложить Вам несколько простых шагов по созданию соединения между компьютерами в интернете по средствам 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();
    www.codenet.ru
     
    2 пользователям это понравилось.
  2. Хел

    Хел ..::V.I.P::..

    Регистрация:
    15 ноя 2006
    Сообщения:
    0
    Симпатии:
    202
    Баллы:
    0
    народ, ну хватит копипастить может уже?
    гораздо интереснее читать то в чем вы разбираетесь, пускай это даже будет заезженная, или несложная тема, все равно будет гораздо лучше чем постить чужой контент, честное слово
     
    2 пользователям это понравилось.
  3. lytgeygen

    lytgeygen pacifiste maniaque ..::V.I.P::..

    Регистрация:
    13 окт 2008
    Сообщения:
    431
    Симпатии:
    244
    Баллы:
    0
    Хел,
    Всё что я могу это написать про VB6 а это бунет очень не интересно т.к. более популярны Си, дельфи и т.д.
     
  4. Хел

    Хел ..::V.I.P::..

    Регистрация:
    15 ноя 2006
    Сообщения:
    0
    Симпатии:
    202
    Баллы:
    0
    не скажи, си не очень популярная тема, а вот делфи согласен. вб популярнее си будет
     
  5. lytgeygen

    lytgeygen pacifiste maniaque ..::V.I.P::..

    Регистрация:
    13 окт 2008
    Сообщения:
    431
    Симпатии:
    244
    Баллы:
    0
    Хел,
    я имел ввиду не простой си а такой как С++, Visual С++, Visual C#

    Добавлено через 6 минут
    P.S.
    Завтро или после завтро напишу статейку насчёт E-mail брута...
     
    Последнее редактирование: 28 июн 2009

Поделиться этой страницей