Последовательность команд для посылки датаграм:
Рабочая станция А | Рабочая станция Б |
1. Добавить имя А | 1. Добавить имя Б |
2. Послать сообщение на Б | 2. Получить сообщение |
3. Получить сообщение | 3. Послать сообщение на А |
4. Удалить имя А | 4. Удалить имя Б |
Последовательность команд NetBios при работе в режиме сессии:
Рабочая станция А | Рабочая станция Б |
1. Добавить имя А | 1. Добавить имя Б |
2. Ждать запроса на образование запроса | 2. Запрашивать образование сессии |
3. Послать сообщение на Б | 3. Получить сообщение |
4. Получить сообщение | 4. Послать сообщение на А |
5. Удалить сессию | 5. Удалить сессию |
6. Удалить имя А | 6. Удалить имя Б |
В настоящее время существует два альтернативных метода для доступа к API NetBios: через int 5Ch или через int 2Ah. Оба этих интерфейса доступны в эмулятор NetBios фирмы Novell. В MS Windows доступ к NetBios (NetBEUI) реализуется через int 2ah. Первое, что необходимо сделать в программе использующей NetBios это проверить установлен ли он:
через int 5Ch
void NetBios (void)
{
sregs,es = FP_SEG(&ncb);
sregs,bx = FP_OFF(&ncb);
int86x(0x5c, ®s, ®s, &sregs);
}
Для работы в Windows, необходимо использовать функцию WinApi NetBios (адрес NCB).
Команды NetBios
Все команды NetBios можно разделить на следующие группы:
- Команды для работы с именами;
- Команды для приема и передачи датаграм;
- Команды для работы с сессиями (каналами);
- Команды для приема и передачи данных через каналы.
Все команды могут выполняться в режиме с ожиданием и без ожидания завершения команды.
- Команды для работы с именами:
NB_WAddName (0x30) – с ожиданием
NB_AddName (0xB0) – без ожидания
NB_WAddGroupName (0x36)
NB_AddGroupName (0xB6)
NB_WDdeleteName (0x31)
NB_WDdeleteName (0xB1) - Команды для приема и передачи датаграм:
NB_WSendDatagram (0x20)
NB_SendDatagram (0xA0)
NB_WSendBroadCastDatagram (0x22)
NB_SendBroadCastDatagram (0xA2)
NB_WRecieveDatgarm (0x21)
NB_RecieveDatgarm (0xA1)
NB_WRecieveBroadCastDatagram (0x23)
NB_RecieveBroadCastDatagram (0xA3) - Команды для работы с каналами:
NB_WCall (0x10)
NB_Call (0x90)
NB_WListen (0x11)
NB_Listen (0x91)