Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Java] что такое Эхо-сервера, Составить программу ЭХО-сервера и продем 
:(
    Опции темы
mankubus89
Дата 20.1.2012, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 20.1.2012

Репутация: нет
Всего: нет



Добрый день! Преподаватель дал задание:
Составить программу ЭХО-сервера и продемонстрировать его работу.(Отвечает то, что получает)

Вот Я сделал, посмотрите и хотелось бы внизу прочли, правильно так будет ему продемонстрировать

import java.io.*;
import java.net.*;

class Test {
public static void main (String a[]) {
String s;
try {
InetAddress x = InetAddress.getByName(a.length==0?"localhost":a[0]);
Socket y = new Socket(x,80); // не®Ї®ав = 7 // создаём Socket
DataInputStream z = new DataInputStream(y.getInputStream()); // DataInputStream i = new DataInputStream(System.in); // PrintStream o = new PrintStream(y.getOutputStream());
while(! "QUIT".equals(s=i.readLine())) //
{
o.println(s);
System.out.println("Received :"+z.readLine());
}
} catch (Exception e) {
System.err.println("Error :"+e);
e.printStackTrace(System.err);
}
}
}


У нас есть программа Эхо-сервера, функция main и блок который занесен в оператор try, Если есть исключение, то оно отлавливается.
В первой строчке у нас есть преобразование полученного параметра, в качестве параметра Мы передаём название узла, с которым хотим связатся.
Если узел не передали, то тогда берём локальный узел, тоесть имя этого компютера, которые всегда является localhost (по названию).
Название этого узла преобразуется в адрес(IP адрес, который будет использован дальше в программе) .

Во второй строчке создаётся Socket(это точки в компютерах, которые связываются между собой, получаются "узлы"). Здесь он создаётся и заносится в переменную y.

Третья строчка объявляется DataInputStream z - это входной поток какой-то, и он создаётся, и внего перенаправляется вход Socketa(присваиваем входной поток от Socketa).
Тоесть всё что будет входить от Socketa удет заносится в переменную z.
Дальше переменная, перенаправляется в неё будет из системной консоли.
Дальше поток печати - это какой-то выходной поток и перенаправляется выходной поток Socketa.
Всё что будет выводится в o будет выводится в Socket.

Дальше идёт цикл, в котором мы получаем данные из консоли и выполняем цикл до тех пор, пока пользователь не введёт слово QUIT.
В этом цикле мы выводим в Socket, то что ввели с клавиатуры, вот тут видно предназначение переменной о (в PrintStream выходного потока,
она ассоциирована с выходным потоком Socketa). Тоесть всё что мы выведем здесь в PrintStream o, оно выведется в Socket
ну и дальше туда куда оно назначено в первой строчке адреса.

И вторая строчка в цикле System.out.println - она выводит на экран(на консоль), то что мы получили из Socketa(точно нее то что мы получили посети).
И в случае если у нас в первой строчке было определено что параметры нам не передали и мы поставили localhost, что является локальной машиной,
Тоесть узел выбирается как текущая машина, он не ищется где-то по сети, а он является сам собой, то если анализиривать две строчки
o.println(s);
System.out.println("Received :"+z.readLine());
То в первой строчке мы выводим Socket, но так как Socket, он и входной и выходной одинаково находятся на машине,
то вторая строчка выведет то что было за printlnнено в первой строчке цикла.
PM MAIL   Вверх
dorogoyIV
Дата 20.1.2012, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 1
Всего: 46



Цитата(mankubus89 @  20.1.2012,  16:41 Найти цитируемый пост)
Вот Я сделал


ты просто списал не правильно!  smile 
исправь синтаксис, код на форуме оберни в теги...  smile 
PM MAIL   Вверх
jk1
Дата 20.1.2012, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 1
Всего: 75



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0783 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.