Справочник Novell Netware 4

Компоненты IPX



IPX взаимодействует с сетью через плату драйвера локальной сети,
поэтому для работы он должен загружаться в память с драйвером
платы локальной сети, запрограммированным специально для работы
с IPX. На рабочей станции и на сервере это делается по-разному.

Использующие IPX приложения должны особым образом подготавливать
пакеты и соблюдать процедуры инициации передачи данных с помощью
IPX. Сам пакет состоит из 30-байтового заголовка и имеет рекомендованный
максимум в 546 байт данных. Для каждого запроса IPX требуется
также создать и инициализировать блок управления событием ECB
(Event Control Block). Иногда (обычно для обработки приходящих
пакетов информации) требуются подпрограммы обслуживания события


ESR (Event Service Routine).

Перед получением требуется открыть гнездо IPX. Гнездо IPX рекомендуется
также открывать и перед передачей пакетов, хотя это и не требуется.
После подготовки ECB и информации пакета в буфере, можно начать
передачу и получение пакетов. ECB имеет поля, которые отслеживаются
и обновляются для определения статуса и поведения каждой выполняемой
вами функции IPX.

Структура заголовка IPX представлена ниже. Большинство числовых
значений в NetWare имеет порядок байт "старший-младший".
typedef struct IPXHeader {
WORD checkSum /* старший-младший */
WORD length; /* старший-младший */
BYTE transportControl; /* используется маршрутизаторами сети */
BYTE packetType; /* тип связанного с пакетом средства */
IPXAddress destination; /* целевой адрес пакета */
IPXAddress source; /* исходный адрес пакета */
}

В структуре IPXAddress 4 байта отводится под номер сети, 6 байт
для узла (или платы интерфейса локальной сети и 2 байта для номера
гнезда. С учетом значения WORD размером 2 байта, значения BYTE
длиной 1 байт и IPXAddress размером 12 байт общий размер IPXHeader
в байтах составляет 2 + 2 + 1 + 1 + 12 + 12 = 30. Вы должны указать
целевой адрес, но исходный адрес посылаемых пакетов IPX будет
заполнять сам.

Чтобы клиент и сервер могли общаться друг с другом, они должны

иметь возможность найти или уже знать гнездо, через которое будут
обмениваться данными. Если номер гнезда определяется при написании
приложения, то он и будет каждый раз использоваться. Такой тип
гнезда можно рассматривать как статическое гнездо, поскольку каждый
раз используется одно и то же гнездо. Если есть опасение, что
такой тип гнезда в приложении может привести к конфликту с использованием
гнезда в другом приложении, вы можете разработать метод выделения
динамического гнезда, которое можно использовать и объявлять об
этом другим, чтобы они также не задействовали это гнездо. Таким
образом, если гнездо, которое вы обычно используете, задействовано
другим приложением, вы можете просто использовать другое. Если
вы хотите зарезервировать гнездо для исключительного использования
вашим приложением, свяжитесь с отделом разработки Novell (Novell
Development Relations) и запросите его номер.

Последовательный обмен пакетами SPX (Sequenced Packet Exchange)
обеспечивает функциональные возможности повторной передачи и тайм-аута,
отсутствующие в IPX. Он ориентирован на подключения и доступен
наряду с IPX. Если у вас есть IPX, то вы имеете и возможность
работы с SPX.

Содержание раздела