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


Программа SLIST - часть 6


// Сбрасываем поле inUseFlag и ESRAddress, устанавливаем тип пакета 0

SendPacket.theECB.inUseFlag = 0; SendPacket.theECB.ESRAddress = 0; SendPacket.SAPq.packetType = 0;

// SAP-пакет состоит из одного фрагмента. Записываем в ECB // количество фрагментов, адрес и размер буфера

SendPacket.theECB.fragmentCount = 1; SendPacket.theECB.fragmentDescriptor[0].address = &SendPacket.SAPq; SendPacket.theECB.fragmentDescriptor[0].size = sizeof(SAPQueryPacket);

// Записываем в ECB номер своего сокета

SendPacket.theECB.socketNumber = SrcSocket;

// Устанавливаем адрес назначения - все станции в текущей сети, // сокет SAP_SOCKET. Устанавливаем поле непосредственного адреса

memset(SendPacket.SAPq.destination.network, '\x00', 4); memset(SendPacket.SAPq.destination.node, '\xFF', 6); SendPacket.SAPq.destination.socket = IntSwap(SAP_SOCKET); memset(SendPacket.theECB.immediateAddress, '\xFF', 6);

// Устанавливаем свой адрес в заголовке запроса

IPXGetInternetworkAddress(SendPacket.SAPq.source.network); SendPacket.SAPq.source.socket = IntSwap(SrcSocket);

// Заполняем передаваемый пакет. Устанавливаем тип запроса // и тип сервера

SendPacket.SAPq.queryType = IntSwap(QueryType); SendPacket.SAPq.serverType = IntSwap(0x0004);

// Посылаем SAP-пакет

IPXSendPacket(&SendPacket.theECB);

// Ожидаем завершения процесса передачи пакета

while (SendPacket.theECB.inUseFlag) IPXRelinquishControl();

// Сохраняем код возврата

errno = SendPacket.theECB.completionCode; }

// ==================================================== // Прием SAP-пакетов // ====================================================

void SLIST::ReceiveSAPPacket(RECEIVE_PACKET *Query) {

// Сбрасываем поле inUseFlag и ESRAddress

Query->theECB.inUseFlag = 0; Query->theECB.ESRAddress = 0; // Записываем в ECB количество фрагментов, адрес и размер буфера

Query->theECB.fragmentCount = 1; Query->theECB.fragmentDescriptor[0].address = &Query->SB; Query->theECB.fragmentDescriptor[0].size = sizeof(Query->SB);




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



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