Локальные сети персональных компьютеров Использование протоколов IPX, SPX, NETBIOS


Пример программы - часть 4


// ----------------------- // Команды интерфейса IPX // -----------------------

#define IPX_CMD_OPEN_SOCKET 0x00 #define IPX_CMD_CLOSE_SOCKET 0x01 #define IPX_CMD_GET_LOCAL_TARGET 0x02 #define IPX_CMD_SEND_PACKET 0x03 #define IPX_CMD_LISTEN_FOR_PACKET 0x04 #define IPX_CMD_SCHEDULE_IPX_EVENT 0x05 #define IPX_CMD_CANCEL_EVENT 0x06 #define IPX_CMD_GET_INTERVAL_MARKER 0x08 #define IPX_CMD_GET_INTERNETWORK_ADDRESS 0x09 #define IPX_CMD_RELINQUISH_CONTROL 0x0a #define IPX_CMD_DISCONNECT_FROM_TARGET 0x0b

// ----------------------- // Коды ошибок // -----------------------

#define NO_ERRORS 0 #define ERR_NO_IPX 1 #define ERR_NO_SPX 2 #define NO_LOGGED_ON 3 #define UNKNOWN_ERROR 0xff

// ----------------------- // Константы // -----------------------

#define SHORT_LIVED 0 #define LONG_LIVED 0xff #define IPX_DATA_PACKET_MAXSIZE 546

// Максимальный размер буфера данных

#define BUFFER_SIZE 512

// Внешние процедуры для инициализации и вызова драйвера IPX/SPX

extern "C" void far ipxspx_entry(void far *ptr); extern "C" int ipx_init(void); extern unsigned IntSwap(unsigned i);

void IPXRelinquishControl(void);

// Структура для вызова драйвера IPX/SPX

struct IPXSPX_REGS { unsigned int ax; unsigned int bx; unsigned int cx; unsigned int dx; unsigned int si; unsigned int di; unsigned int es; };

// Класс динамических сокетов

class DYNAMIX_SOCKET { public: unsigned errno; unsigned Socket; struct IPXSPX_REGS iregs;

// Конструктор динамического сокета. // Открывает сокет и запоминает его номер.

DYNAMIX_SOCKET() { iregs.bx = IPX_CMD_OPEN_SOCKET; iregs.dx = 0; iregs.ax = 0; ipxspx_entry( (void far *)&iregs ); Socket = iregs.dx; errno = iregs.ax; };

// Деструктор. Закрывает ранее открытый сокет.

~DYNAMIX_SOCKET() { iregs.bx = IPX_CMD_CLOSE_SOCKET; iregs.dx = Socket; ipxspx_entry( (void far *)&iregs ); };

};

// Класс программ-клиентов IPX

class IPX_CLIENT { public:

unsigned errno;

// Сокет, с которым работает программа-клиент

DYNAMIX_SOCKET *Socket;




- Начало -  - Назад -  - Вперед -



Книжный магазин