powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Эхо-сервера
1 сообщений из 1, страница 1 из 1
Эхо-сервера
    #37623381
mankubus89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Преподаватель дал задание:
Составить программу ЭХО-сервера и продемонстрировать его работу.(Отвечает то, что получает)

Вот Я сделал, посмотрите и хотелось бы внизу прочли, правильно так будет ему продемонстрировать
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
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нено в первой строчке цикла.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Эхо-сервера
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]