Прием сообщений
Для приема сообщений предназначена функция GetBroadcastMessage():
int GetBroadcastMessage(char *MessageBuffer);
Параметр определяет адрес буфера, в который будет записано принятое сообщение. Размер буфера должен составлять не менее 56 байт.
Функция возвращает 0 при успешном завершении или код ошибки:
Код ошибки | Значение |
0xFC | Переполнение очереди сообщений |
0xFE | Ошибка ввода/вывода или нехватка памяти на сервере |
Если в буфере нет сообщений, в первый байт буфера будет записано нулевое значение.
Вместо функции GetBroadcastMessage() можно использовать функцию E1h прерывания INT21h:
На входе: | AH | = | E1h; |
DS:SI | = | Адрес буфера запроса; | |
ES:DI | = | Адрес буфера ответа. | |
На выходе: | AL | = | Код ошибки или 0, если операция завершилась без ошибок. |
Буфер запроса:
struct REQUEST { WORD PacketLength; // размер пакета запроса BYTE Function; // должно быть равно 1 };
Буфер ответа:
struct REPLAY { WORD PacketLength; // размер пакета BYTE MessageLength; // длина сообщения BYTE Message[MessageLength]; // сообщение };