passportwiki.ru

Организация взаимодействия между WS с использование протокола IPX

Взаимодействие WS в ЛВС и ГВС похоже на работу с файлами в программе:

Файловая операция Эквивалент IPX
Open OpenSocket
Read ListenforPacket
Write SendPacket
Seek -------------
Close CloseSocket


Управлять взаимодействием WS – WS в программе можно используя набор функций (системных вызовов), которые предоставляются драйвером IPX в дополнение к обычным функциям DOS.


Для работы в IPX используется следующая последовательность действий:

Станция А Станция В
OpenSocket OpenSocket
Get network address of B Get network address of A
Send packet to B Recieve data packet
Receive data packet Send data packet
Close socket Close socket

Для определения адреса абонента, которому будет послано сообщение, необходимо знать номер сети и номер узла. Если в сети имеется FS NW (File Server NetWare), то их можно узнать, используя функцию GetInternetWorkAddress. Если файл-сервер не установлен эти адреса нужно знать заранее, или же определить их послав широковещательное сообщение всем рабочим станциям (клиентам), которые после этого ответят своими адресами.

Необходимо создать структуру следующего вида:

Struct IPX_HEADER
{unsigned int Checksum;
unsigned char Length;
unsigned char TransportControl;
unsigned char PacketType;
unsigned char DestNetwork[4];
unsigned char DestNode[6];
unsigned int DestSocket;
unsigned char SourseNetwork[4];
unsigned char SourseNode[6];
unsigned int SourseSocket;

Для работы в IPX используют следующие функции:
IPX OpenSocket – для открытия socket’а.
IPX ListenPacket – для приема пакета.
IPX SendPacket – для посылки пакета.

Перед вызовом функции IPX SendPacket необходимо дополнительно задать еще один параметр ImmediateAddress – непосредственный адрес. Это адрес узла сети, в котором установлен мост, связывающий две сети. Нужно, если пакет направляется в другую сеть.

Мост в сети

Узнать адрес моста в сети можно с помощью функции IPX GetLocalTarget – получить локальную цель, которая возвращает адрес моста. Она возвращает адрес моста, а если его нет, то адрес станции назначения. Этот адрес затем заносится в поле непосредственного адреса блока управления событиями ECB (Event Control Block). Блок ECB – это структура данных, которая непосредственно по сети не передается, но содержит все необходимое для выполнения операций IPX. Он формируется отдельно для каждой операции IPX, которую нужно выполнить в программе. Если нужно передать пакет, то в ECB указывается адрес блока данных в ОЗУ, которые необходимо передать. При получении данных, в ECB указывается место, куда эти данные будут переданы.

Формат блока ECB:

Поле Рамзер Назначение
Link 4 Указатель на следующий ECB
ESKAddress 4 Адрес программы ESK
Thuse 1 Флаг состояния ECB
CCode 1 Код завершения запроса
Socket 2 Socket для приема или передачи
IPXWorkSpace 4 Рабочий буфер для IPX
DriverWorkSpace 5 Рабочий буфер для драйвера адаптера
TMMAddress 5 Адрес для передачи пакета
FragmentCnt 2 Количество фрагментов в пакете
Address 4 Адрес фрагмента
Size 2 Размер фрагмента

Яндекс.Метрика