ВУЗ:
Составители:
Рубрика:
5
кроме сокета сервера знать его сетевой адрес - номер сети и адрес рабочей
станции в сети. Если программа-клиент знает только сокет программы-сервера,
но не знает его сетевой адрес, последний можно запросить у сервера, послав за-
прос во все станции одновременно.
Такой запрос в пределах одного сегмента сети можно выполнить, если
в
качестве адреса рабочей станции указать специальное значение
FFFFFFFFFFFFh (все единицы). Это "широковещательный" (broadcast) адрес.
Клиент посылает такой запрос на известный ему сокет программы-сервера. Его
принимают все программы на всех рабочих станциях, ожидающие пакеты на
данном сокете.
Программа-сервер может определить свой собственный сетевой адрес
(выполнив вызов соответствующей функции IPX) и
послать его клиенту. Адрес
клиента программа-сервер может взять из заголовка принятого пакета.
5. Передача и прием данных
Для приема или передачи пакета прикладная программа должна:
1. подготовить пакет данных, включая его заголовок;
2. подготовить блок управления событием ECB (Event Control Block);
3. передать его адрес соответствующей функции IPX и вызвать ее.
Функции IPX, принимающие или передающие пакет, не
выполняют ожи-
дания завершения операции, а сразу возвращают управление вызвавшей их про-
грамме. Прием или передача выполняются сетевым адаптером автономно и
асинхронно по отношению к программе, вызвавшей функцию IPX для передачи
данных. После того, как операция передачи данных завершилась, в соответст-
вующем поле блока ECB устанавливается признак. Программа может периоди-
чески проверять ECB
для обнаружения признака завершения операции.
В блоке ECB можно указать адрес процедуры, которая будет вызвана при
завершении выполнения операции передачи данных. В этом случае прикладная
программа не будет тратить время на периодическую проверку блока ECB.
6. Формат передаваемого пакета
Каждый пакет состоит из заголовка и блока данных. Станция, которая бу-
дет передавать пакет
данных, должна записать в заголовке адрес назначения и
свой собственный.
Заголовок пакета может быть описан следующей структурой:
struct _IPXHeader {
unsigned char Checksum[2];
unsigned char Length[2];
unsigned char TransportControl;
unsigned char PacketType;
unsigned char DestNetwork[4];
unsigned char DestNode[6];
unsigned char DestSocket[2];
unsigned char SourceNetwork[4];
unsigned char SourceNode[6];
Страницы
- « первая
- ‹ предыдущая
- …
- 5
- 6
- 7
- 8
- 9
- …
- следующая ›
- последняя »