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

       

Передача сообщений пользователям


Для передачи сообщения другим пользователям предназначена функция SendBroadcastMessage():

int SendBroadcastMessage(char *Message, WORD *ConnectionList, BYTE *ResultList, WORD ConnectionCount);

Параметр Message задает адрес текстовой строки, содержащей сообщение. Размер этой строки не должен превышать 56 байт (включая двоичный ноль, закрывающий строку).

Параметр ConnectionList - указатель на массив слов, содержащий номера каналов, используемых файл-сервером для связи с рабочими станциями. Размер этого массива определяется параметром ConnectionCount.

Параметр ResultList - массив байт, в котором для каждой станции отражается результат посылки сообщения:



0x00 Сообщение передано успешно
0xFC Сообщение не передано, так как буфер сообщения для данной станции уже содержит сообщение, которое еще не было принято станцией
0xFD Соответствующий номер канала задан неправильно
0xFF Станция заблокировала прием сообщения, установив соответствующий режим приема сообщений. Этот код ошибки может появиться и в том случае, если заданный номер канала не используется

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

Код ошибки Значение
0xFE Ошибка ввода/вывода или нехватка памяти на сервере

Вместо функции SendBroadcastMessage() можно использовать функцию E1h прерывания INT21h:

На входе: AH = E1h;
DS:SI = Адрес буфера запроса;
ES:DI = Адрес буфера ответа.
На выходе: AL = Код ошибки или 0, если операция завершилась без ошибок.

Буфер запроса:

struct REQUEST { WORD PacketLength; // размер пакета запроса BYTE Function; // должно быть равно 0 BYTE ConnectionCount; // количество станций BYTE ConnectionList[ConnectionCount];// список станций BYTE MessageLength; // длина сообщения BYTE Message[MessageLength]; // сообщение };

Буфер ответа:

struct REPLAY { WORD PacketLength; // размер пакета BYTE ConnectionCount; // количество станций BYTE ResultList[ConnectionCount];// результат };



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