Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Локальные сети персональных компьютеров. Работа с сервером Novell NetWare

© Александр Фролов, Григорий Фролов
Том 4, М.: Диалог-МИФИ, 1993, 168 стр.

[Назад] [Содеожание] [Дальше]

9.12. Работа с протоколом IPX

В этом разделе мы приведем описание тех функций, предназначенных для работы с протоколом IPX, которые были использованы в нашей книге. Полное описание дано в документации, поставляющейся с библиотекой Novell NetWare C Interface.

Инициализация драйвера IPX

int IPXInitialize(void) ;


Функция возвращает 0 при успешном завершении или код ошибки.

Открытие сокета

int IPXOpenSocket(char *SocketNumber, char SocketType) ;


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

SocketNumber указатель на двухбайтовый массив, содержащий значение сокета или ноль, если требуется получить динамический сокет
SocketType 00h - короткоживущий сокет,
FFh - долгоживущий сокет

Закрытие сокета

int IPXCloseSocket(char *SocketNumber);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

SocketNumber указатель на двухбайтовый массив, содержащий значение закрываемого сокета

Прием IPX-пакета

void IPXListenForPacket(ECB *EventControlBlock);


Параметры:

EventControlBlock указатель на блок ECB

Передача пакета

void IPXSendPacket(ECB *EventControlBlock);


Параметры:

EventControlBlock указатель на блок ECB

Отмена блока ECB

void IPXCancelEvent(ECB *EventControlBlock);


Параметры:

EventControlBlock указатель на блок ECB

Определение собственного сетевого адреса

void IPXGetInternetworkAddress(IPXAddress *NetworkAddress) ;


Параметры:

NetworkAddress указатель на массив из 12 байт, в который будет записан полный сетевой адрес

Типы данных

Сетевой адрес

typedef struct IPXAddress {
    BYTE    network[4];
    BYTE    node[6];
    BYTE    socket[2];
} IPXAddress;


Заголовок пакета IPX

typedef struct IPXHeader {
    WORD        checkSum;
    WORD        length;
    BYTE        transportControl;
    BYTE        packetType;
    IPXAddress  destination;
    IPXAddress  source;
} IPXHeader;


Дальние указатели на данные и функции

#define FARDATAPTR(type,var) type far *var
#define FARCODEPTR(type,var) type (far *var)()


Дескриптор фрагмента

typedef struct ECBFragment {
    FARDATAPTR(void,address);
    WORD    size;
} ECBFragment;


Блок ECB

typedef struct ECB {
    FARDATAPTR(void, linkAddress);
    FARCODEPTR(void, ESRAddress);
    BYTE        inUseFlag;
    BYTE        completionCode;
    WORD        socketNumber;
    BYTE        IPXWorkspace[4];
    BYTE        driverWorkspace[12];
    BYTE        immediateAddress[6];
    WORD        fragmentCount;
    ECBFragment fragmentDescriptor[2];
} ECB;
[Назад] [Содеожание] [Дальше]