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



         

Система "клиент-сервер" на базе каналов - часть 2


// Устанавливаем "*" в поле CallName, это означает, // что сервер будет обрабатывать запросы на создание // канала от любого имени

AddNameNCB.SetCallName("*");

// Устанавливаем время тайм-аута для команд // приема и передачи данных по каналу

AddNameNCB.SetRtoSto(20,20);

// Создаем канал с принимающей стороны

AddNameNCB.WListen(); }

// Деструктор, удаляет канал и имя.

~NETBIOS_SESSION_SERVER() {

// Удаление канала

AddNameNCB.WHangUp();

// Удаление имени

AddNameNCB.WDeleteName(OurName); errno = AddNameNCB.Error(); }

// Функция для проверки кода ошибки

int Error(void) {return errno;}

// Функция для приема данных по каналу

void Receive(char *ReceiveBuffer, unsigned BufferSize) {

// Записываем в NCB адрес и длину буфера

AddNameNCB.SetBuffer(ReceiveBuffer, BufferSize);

// Выполняем прием датаграммы с ожиданием

AddNameNCB.WReceive();

} };

void main(void) {

// Наш сервер с именем "NETBIOS Server"

NETBIOS_SESSION_SERVER Server("NETBIOS Server"); char ReceiveBuffer[512];

// Проверяем, были ли ошибки на этапе инициализации сервера.

if(Server.Error()) { printf("Ошибка %02.2X\n", Server.Error()); return; } printf("Инициализация завершена.\n"); printf("Ожидаем сообщение от клиента.\n");

// Принимаем сообщение от клиента по каналу, который был создан // конструктором класса NETBIOS_SESSION_SERVER

Server.Receive(ReceiveBuffer, 512); printf("Принято: >%s<\n",ReceiveBuffer); }

В файле nbclient.cpp находится программа-клиент (листинг 23), работающая в паре с только что приведенной программой-сервером.

Программа-клиент создает объект NETBIOS_SESSION_CLIENT, конструктор которого выполняет действия, аналогичные конструктору класса NETBIOS_SESSION_SERVER. Есть одно отличие: для создания канала в конструкторе класса NETBIOS_SESSION_CLIENT используется функция WCall(), а не WListen(). Конструктор создает канал с программой-сервером, указывая имя "NETBIOS Server", которое используется сервером для работы с клиентом.




Содержание  Назад  Вперед