![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
mankubus89 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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нено в первой строчке цикла. |
|||
|
||||
dorogoyIV |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 1 Всего: 46 |
||||
|
||||
jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 1 Всего: 75 |
Для домашних заданий, курсовых, существует "Центр Помощи".
Тема перенесена! -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |