Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: А.В. Фролов, Г.В. Фролов - Microsoft Visual J++
<<-[Весь Текст]
Страница: из 275
 <<-
 
доставить пакет данных, хранится не в сокете, а в пакете, то есть в объекте 
класса DatagramPacket.
   Помимо только что описанных конструкторов, в классе DatagramPacket 
определены четыре метода, позволяющие получить данные и информацию об адресе 
узла, из которого пришел пакет, или для которого предназначен пакет.
   Метод getData возвращает ссылку на массив данных пакета:
public byte[] getData();
   Размер пакета, данные из которого хранятся в этом массиве, легко определить 
с помощью метода getLength:
public int getLength();
   Методы getAddress и getPort позволяют определить адрес и номер порта узла, 
откуда пришел пакет, или узла, для которого предназначен пакет:
public InetAddress getAddress();
public int getPort();
   Если вы создаете клиент-серверную систему, в которой сервер имеет заранее 
известный адрес и номер порта, а клиенты - произвольные адреса и различные 
номера портов, то после получения пакета от клиента сервер может определить с 
помощью методов getAddress и getPort адрес клиента для установления с ним связи.

   Если же адрес сервера неизвестен, клиент может посылать широковещательные 
пакеты, указав в объекте класса DatagramPacket адрес сети. Такая методика 
обычно используется в локальных сетях.
   Как указать адрес сети?
   Напомним, что адрес IP состоит из двух частей - адреса сети и адреса узла. 
Для разделения компонент 32-разрядного адреса IP используется 32-разрядная 
маска, в которой битам адреса сети соответствуют единицы, а битам адреса узла - 
нули.
   Например, адрес узла может быть указан как 193.24.111.2. Исходя из значения 
старшего байта адреса, это сеть класса С, для которой по умолчанию используется 
маска 255.255.255.0. Следовательно, адрес сети будет такой: 193.24.111.0. 
Подробнее об адресации в сетях TCP/IP вы можете прочитать в 23 томе “Библиотеки 
системного программиста”, о котором мы упоминали в разделе “Передача данных с 
использованием сокетов” нашей книги.
   Приложения DatagramServer и DatagramClient
   Приложения DatagramServer и DatagramClient иллюстрируют применение 
датаграммных сокетов для передачи данных от нескольких копий одного и того же 
клиента одному серверу с известным адресом и номером порта.
   Клиентские приложения посылают серверу строки, которые пользователь вводит с 
клавиатуры. Сервер принимает эти строки, отображая их в своем консольном окне 
вместе с номером порта клиента (рис. 3.4).

Рис. 3.4. Передача данных между приложениями DatagramClient и DatagramServer 
через датаграммный сокет
   Когда с консоли клиента будет введена строка “quit”, этот клиент и сервер 
завершает свою работу. Работа остальных клиентов также может быть завершена 
подобным образом, причем независимо от того, работает сервер
 
<<-[Весь Текст]
Страница: из 275
 <<-