ВУЗ:
Составители:
Рубрика:
11
байт; в него будет записан адрес станции, на которой работает данная програм-
ма.
После завершения: -Регистры не используются.
8.3. Прием и передача пакетов
IPXListenForPacket используется для приема пакетов, в адресе назначе-
ния которых указан сокет, совпадающий с номером сокета, подготовленного в
блоке ECB и предварительно открытого с помощью функции IPXOpenSocket.
Одновременно программа может подготовить некоторое количество блоков
ECB (максимальное количество определяется в конфигурационном файле драй-
вера параметром IPX SOCKETS), и для
каждого вызвать функцию
IPXListenForPackets. Эта функция сразу возвращает управление вызвавшей ее
программе, не дожидаясь прихода пакета. Получение пакета вызывает передачу
управления ESR программе, если адрес таковой записан в ECB, кроме того при-
знак результата записывается в поле InUse.
При вызове: BX -04h. ES:DI - Указа-
тель на заполненный блок ECB. Необходимо заполнить поля:ESRAddress;
Socket; FragmentCnt; указатели на буферы фрагментов Address; размеры фраг-
ментов Size.
После завершения: -Регистры не используются. После приема па-
кета в поле CCode могут находиться следующие значения: 00h-пакет был при-
нят без ошибок; FFh-указанный в ECB сокет не был предварительно открыт
программой; FDh-переполнение пакета: либо поле количества фрагментов в па-
кете FragmentCnt равно нулю, либо буферы, описанные дескрипторами фраг-
ментов, имеют недостаточный размер
для записи принятого пакета; FCh-запрос
на прием данного пакета был отменен специальной функцией драйвера IPX.
IPXSendPacket ставит блок ECB в очередь на передачу, а сама передача
пакета происходит асинхронно по отношению к вызову. Момент завершения
передачи пакета определяется по передаче управления ESR-программе или по
признаку в поле InUse.
При вызове: BX - 03h. ES:DI - Указатель на заполнен-
ный блок ECB. Необходимо заполнить поля: ESRAddress; Socket ImmAddress;
FragmentCnt; указатели на буферы фрагментов Address; размеры фрагментов
Size.
После завершения: Регистры не используются. После передачи пакета в
поле CCode могут находиться следующие значения: 00h-пакет был передан без
ошибок; FFh - пакет невозможно передать физически из-за неисправности в се-
тевом адаптере или в сети; FEh - пакет невозможно доставить по назначению,
так как станция с указанным адресом не существует или неисправна; FDh -
сбойный пакет по какой-либо причине; FCh-запрос на передачу данного пакета
был отменен специальной функцией драйвера IPX.
IPXRelinquishControl выделяет драйверу IPX процессорное время, необ-
ходимое для его правильной работы. Эта функция должна вызываться в циклах
ожидания приема и передачи пакетов.
При вызове: BX - 0Ah. После завершения:
Регистры не используются.
Описанных выше функций достаточно для реализации обмена данными.
9. Варианты заданий
1. Переслать файл от сервера к клиенту. Без подтверждения.