Локальные сети персональных компьютеров. Использование протоколов IPX, SPX, NETBIOS
© Александр Фролов, Григорий Фролов
Том 4, М.: Диалог-МИФИ, 1993, 160 стр.
|
8. Приложение 4. РАБОТА С IPX, SPX И NETBIOS
В СРЕДЕ MS WINDOWS
8.1. Работа в среде Microsoft Windows версии
3.1
8.2. Работа в среде Microsoft Windows for
Workgroups версии 3.1
Создание программ, специально предназначенных
для работы в среде Microsoft Windows, не является
предметом обсуждения в данной книге. Однако мы
сделаем несколько замечаний относительно
использования протоколов IPX, SPX и NETBIOS в
программах, работающих в среде Microsoft Windows версии
3.1 и Microsoft Windows for Workgroups версии 3.1.
Все резидентные программы, имеющие отношение к
сетевой оболочке Novell NetWare, необходимо загружать
до запуска Windows. Это относится и к эмулятору
протокола NETBIOS. Если вы запустите эти программы
из виртуальной машины MS-DOS, работающей в среде
WIndows, рано или поздно произойдет аварийное
завершение Windows.
Если ваша программа работает в среде MS-DOS с
протоколами IPX, SPX или NETBIOS, она без всяких
изменений будет работать и на виртуальной машине
Windows. Вам только надо проследить, чтобы все
резидентные программы и эмулятор NETBIOS
загружались до запуска Windows.
Если же вы желаете создать полноценное
приложение для Windows, работающее с сетевыми
протоколами, вам следует иметь в виду, что для
всех этих протоколов необходимо указывать
адреса управляющих блоков и буферов,
расположенные в первом мегабайте основной
оперативной памяти. Кроме того, из приложений
Windows, работающих в защищенном режиме, вы не можете
непосредственно вызывать драйвер IPX/SPX или
прерывание NETBIOS, так как эти интерфейсы
рассчитаны на вызов из реального режима.
Вы можете выйти из такого затруднительного
положения, если воспользуетесь интерфейсом с
защищенным режимом DPMI (DOS Protected Mode Interface),
описанным нами в томе "Библиотеки системного
программиста", по-священном использованию
защищенного режима.
В рамках интерфейса DPMI есть функции,
позволяющие из программы, работающей в
защищенном режиме, вызывать прерывания или
функции, предназначенные для работы в реальном
режиме. Кроме того, в API Windows есть функции, с
помощью которых вы можете заказать для программы
защищенного режима буферы, расположенные в
первом мегабайте основной оперативной памяти.
Замечания, сделанные выше, относятся и к Microsoft
Windows for Workgroups версии 3.1. Однако эта операционная
система может и не поддерживать протоколы IPX/SPX. С
помощью приложения Control Panel вы можете подключить
или отключить поддержку сети Novell NetWare и
протоколов IPX/SPX.
Если поддержка Novell NetWare не используется, вам
доступен протокол NETBIOS, который является
"родным" протоколом для Windows for Workgroups.
Мы проверили работу NETBIOS через интерфейс
прерывания INT 2Ah при работе в виртуальной
машине MS-DOS. Сразу после загрузки сетевых
драйверов Windows for Workgroups интерфейс NETBIOS недоступен.
Однако в среде виртуальной машины MS-DOS этот
интерфейс появляется.
Приведем два фрагмента системы
"клиент-сервер", проверенной нами при работе
в Windows for Workgroups. Вы сможете найти полные исходные
тексты на дискете, которая продается вместе с
книгой (эти исходные тексты почти полностью
повторяют тексты системы "клиент-сервер",
работающей с датаграммами).
Первый фрагмент проверяет присутствие
интерфейса NETBIOS:
// Проверяем наличие интерфейса NETBIOS
regs.h.ah = 0;
int86(0x2a, ®s, ®s);
errno = 0;
if(regs.h.ah == 0) {
errno=0xff;
}
Второй фрагмент предназначен для вызова NETBIOS
через прерывание INT 2Ah:
// Функция для вызова NETBIOS
void NetBios(void) {
sregs.es = FP_SEG(&ncb);
regs.x.bx = FP_OFF(&ncb);
regs.h.ah = 0x4;
regs.h.al = 0x1;
int86x(0x2a, ®s, ®s, &sregs);
}
|