Главная страница

Программирование в сетях Windows. Э. Джонс, Д. Оланд


Скачать 2.88 Mb.
НазваниеЭ. Джонс, Д. Оланд
АнкорПрограммирование в сетях Windows.pdf
Дата12.10.2017
Размер2.88 Mb.
Формат файлаpdf
Имя файлаПрограммирование в сетях Windows.pdf
ТипКнига
#9346
страница45 из 50
1   ...   42   43   44   45   46   47   48   49   50

Команда NCBFINDNAME
Команда находит местоположение (имя компьютера) в сети. После ее выпол- нения буфер ncbjouffer заполняется структурой EINDJVAME_HEADER, за ко- торой следуют одна или несколько структур FINDJVAMEJ3UFFER. Команда специфична для Microsoft Windows NT и не поддерживается другими плат- формами Win32.
Поле
ncb_command
neb retcode
neb Isn
nebnum
neb buffer
nebjength
ncb_callname
neb name
neb rto
nebsto
ncb_post
nebjananum
ncb_cmd_cplt
neb event
Ввод или вывод
Ввод
Вывод
Не обязательно
Не обязательно
Ввод и вывод
Ввод
Ввод
Не обязательно
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Нужно ли задать
Да
Нет
Нет
„„„ Нет _
Да
Да
Да
Нет
Нет
Нет
Нет
Да
Нет
Нет

Приложение А Перечень команд NetBIOS
543
Команда NCBHANGUP
Команда закрывает указанный сеанс. Все отложенные команды приема для се- тевого соединения завершаются и возвращается ошибка закрытия сеанса: NRC
SCLOSED — ОхОА. Если команды отправки или их цепочка ожидают обработ- ки, то команда завершения сеанса откладывается, пока они не будут выпол- нены. Эта задержка возникает, если команды передают данные или ожида- ют, пока удаленная сторона выдаст команду приема. К тому же, если в режи- ме ожидания находятся несколько команд NCBRECVANY, только одна из них вернет код ошибки, когда сеанс будет завершен. Для любой другой команды приема код ошибки возвращает каждая ожидающая команда
Поле
ncbcommand
neb retcode
ncbjsn
neb пит
nebjouffer
neb length
ncb_callname
neb name
neb rto
ncb_sto
ncb_post
neb lana пит
ncb_cmd_cplt
neb event
Ввод или вывод
Ввод
Вывод
Ввод
Не обязательно
Не обязательно ч ч
*
т
Не обязательно —
Не обязательно
Не обязательно
Не обяза гельно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Нужно ли задать
Да
Нет
Да
Нет
Нет — —


Нет
Нет
Нет
Нет
Нет
Нет
Да
Нет
Нет
Команда NCBLANSTALERT
Команда специфична для Windows NT и уведомляет пользователя о сбоях в локальной сети, длящихся больше минуты. Впрочем, при тестировании эта команда не реагировала на ряд типичных ошибок ЛВС, например, на разрыв сетевого кабеля.
Поле
ncb_command
nebjretcode
ncbjsn
nebjnum
ncb_buffer
ncbjength
ncb_callname
neb name
ncbjrto
Ввод или вывод
Ввод
Вывод
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Нужно ли задать
Да
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
см. след. стр,

5 4 4 Приложение А Перечень команд NetBIOS
продолжение
Поле Ввод или вывод Нужно ли задать
ncbjto
ncb_post
neb lananum
neb cmd_cplt
neb event
He обязательно
He обязательно
Ввод
Вывод
Нет
Нет
Да
Нет
Нет
Команда NCBLISTEN
Команда прослушивает соединения от другого процесса, локального или удаленного. Если первый символ ncb_callname — звездочка ("), соединение устанавливается с любым адаптером сети, выдавшим команду NCBCALL ло- кальному имени. Имя, генерирующее NCBCALL, возвращается в поле neb call-
name. Если задан таймаут отправки или приема, он применяется во всех за- просах в рамках нового сеанса.
Поле
nebcommand
neb retcode
ncbjsn
neb пит
ncb_buffer
neb length
neb_callname
neb name
ncbjrto
neb sto
ncb_post
nebjanajnum
ncb_cmd_cplt
neb event
Ввод или вывод
Ввод
Вывод
Вывод
Не обязательно
Не обязательно
Не обязательно
Ввод и вывод
Ввод
Ввод
Ввод
Ввод
Ввод
Вывод
Ввод
Нужно ли задать
Да
Нет
Нет
Нет
Нет
Нет
Да
Да
Нет
Нет
Нет ")Л
Да
Нет
Нет
Команда NCBRECV
Команда получает данные от сеанса с указанным именем. Если ожидающие обработки данные способны получить несколько команд, они обрабатыва- ются в таком порядке.
1. Прием (NCBRECV).
2. Прием всех для указанного имени (NCBRECVANY).
3- Прием всех для любого имени (NCBRECVANY).
Все команды с одинаковым приоритетом обрабатываются в порядке по- ступления. Если буфер обмена не достаточно вместителен, выдается ошиб-

Приложение А Перечень команд NetBIOS
5 4 5
ка NRCJNCOMP (ОхОб). Тогда выдайте еще одну команду приема с более ем- ким буфером. Впрочем, если в команде отправки задан таймаут или она не требует подтверждения, данные будут потеряны. По завершении в поле
ncbjength будет храниться объем фактически считанных данных.
Поле
ncb_command
neb retcode
ncbjsn
ncb_num
neb buffer ^
neb length
ncb_callname
Ty
neb name
neb rto
ncb_sto
ncb_post
neb lana пит
ncbcmdcplt
neb event
Ввод или вывод
Ввод
Вывод
Ввод
Ввод
Ввод
Ввод и вывод
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Л
Л
1

ildUHJfl
Нужно ли задать
Да
Нет
Да
Да
Д
а
to'.
Нет
ft
Нет
Нет гтСТ Ж _^ _.
г \ ffrl' м*к IT F^ 5
Д
а
<> )f кд ,
Нет .ь,
и
,
Нет
Команда NCBRECVANY
Команда получает данные от любого сеанса, соответствующего указанном)
| имени, может быть использована и для получения данных, предназначенные для любого локального имени. Для этого нужно присвоить полю nebjnun
г
' значение OxFF. В ином случае присвойте nebjnum номер сети, возвращенный с при добавлении имени в локальную таблицу имен. Затем любые данные, от
* ложенные для данного имени, будут выбраны этой командой.
Если ожидают обработки несколько команд приема, действует тот ж(
' порядок приоритетов, что и при использовании команды NCBRECV.
f
Когда сеанс закрыт командой закрытия локального соединения, коман
г
дой закрытия соединения на удаленной стороне или командой отмены со
* единения, любые ожидающие команды NRCRECVANY идя указанного имеш
* будут завершены с ошибкой NRCSCLOSED (ОхОА). В поле ncbjsn из струк
г туры NCB хранится номер локального соединения, которое было закрыта
<• Если отложенных для указанного имени команд NCBRECVANY нет, для закры того и какого-либо иного соединения вступает в силу отложенная команд:
NCBRECVANY {nebjnum — OxFF). Она будет выполнена с ошибкой NRCJSCLOSED
а в поле ncbjsn — записан номер соответствующего сеанса.
Поле
neb command
neb retcode
neb Isn
Ввод или вывод
Ввод
Вывод
Вывод
Нужно ли задать
Да
Нет
Нет
см. след. стр

546 Приложение А Перечень команд NetBIOS
продолжение
Поле
neb пит
ncbbuffer
ncbjength
neb callname
neb name
neb rto
neb sto M
ncb_post
neb lana пит
neb cmd cplt
ncb_event
Ввод или вывод
Ввод и вывод
Ввод
Ввод и вывод
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Нужно ли задать
Да
Да
Да
1
Нет
Нет
Нет
Нет
Нет
Да
Нет
Нет
Команда NCBRESET
Команда сбрасывает указанный номер LANA и затрагивает определенные ресурсы среды.
Ш Если поле ncbjsn не равно 0, все ресурсы, связанные с ncbjanajium,
освобождаются.
Ш Если поле ncbjsn равно 0, все ресурсы, связанные с ncbjanajium, осво- бождаются и выделяются новые. Байт ncb_callname[O] задает максималь- ное количество сеансов, байт ncb_callname[2] — максимальное количе- ство имен, а байт ncb_callname[3]требует, чтобы приложение использо- вало имя компьютера (у которого номер имени 1).
Поле Ввод или вывод Нужно ли задать
nebjzommand Ввод Да
ncb_retcode Вывод Нет
ncbjsn Ввод Да
nebjnum Ввод Да
nebjouffer He обязательно Нет
ncbjength He обязательно Нет
ncb_callname He обязательно Нет
nebjiame He обязательно Нет
ncbjrto He обязательно Нет
ncb_sto He обязательно Нет
ncb_post He обязательно Нет
ncbjanajium Ввод Да
ncbcmdjcplt Вывод Нет
neb event He обязательно Нет

Приложение А Перечень команд NetBIOS
547
Команда NCBSEND
Команда отправляет данные указанному участнику сеанса. Максимальный размер передаваемых данных — 65 536 байт (64 кб). Если удаленная сторо- на выдает команду завершения связи, все отложенные отправки возвраща- ют ошибку, связанную с закрытием сеанса, — NRCJSCLOSED (0x0А). Отложен- ные команды отправки обрабатываются в порядке поступления.
Поле
Ввод или вывод
Нужно ли задать
ncbcommand
neb retcode
ncbjsn
neb пит
nebbuffer
nebjength
ncbcallname
neb name
с neb rto
nebsto
ncb_post
neb lana пит
ncb_cmd_cplt
neb event
Ввод
Вывод
Ввод
He обязательно
Ввод
Ввод
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Да
Нет
Да
Нет
Да
Да
Нет
Нет
Нет
Нет
Нет
Да
Нет
Нет
Команда NCBSENDNA
Команда отправляет данные указанному сеансу и не ожидает подтверждения от партнера. В остальном ведет себя так же, как NCBSEND.
Поле
Ввод или вывод
Нужно ли задать
ncb_command
ncb_retcode
ncbjsn
nebjium
nebjbuffer
nebjength
ncb_callname
nebjiame
ncbjrto
ncb_sto
ncb_post
nebjanajnum
ncb_cmd_cplt
neb event
Ввод
Вывод
Ввод
He обязательно
Ввод
Ввод
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Нет
Нет
Да
Нет
Да
Да
Нет
Нет
Нет
Нет
Нет
Да
Нет
Нет

548 Приложение А Перечень команд NetBIOS
Команда NCBSSTAT
Команда получает сведения о состоянии сеанса. При вызове этой команды
ncb_buffer ссылается на область памяти, которая будет заполнена структурой
SESSION'_ HEADER, далее следуют одна или более структур SESSION_BUFFER.
Если первый байт ncbjname — звездочка ('), команда выясняет состояние для всех сеансов, связанных со всеми именами в таблице локальных имен. Если предоставленный буфер слишком мал, выдается ошибка NRCJNCOMP (0x06).
Если длина буфера меньше 4 байт — ошибка NRCJBUFLEN (0x01).
Поле
ncbjzommand
neb retcode
ncbjsn
neb пит
neb buffer
nebjength
neb callname
ncbjname
neb rto
nebjsto
nebjdost
nebjana пит
ncb_cmdjcplt
neb event
Ввод или вывод
Ввод
Вывод
Не обязательно
Вывод
Ввод
Ввод
Не обязательно
Ввод
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Нужно ли задать
Да
Нет
Нет
к
Нет _„
к
Да
Да
Нет
Да
Нет ,
Нет
Нет
Да
Нет
Нет
Команда NCBUNLINK
Команда отменяет привязку к адаптеру. Предусмотрена для совместимости с ранними версиями NetBIOS и на платформах Win32 не оказывает эффекта.

П Р И Л О Ж Е Н И Е
Вспомогательные функции IP
i
В этом приложении мы опишем некоторые новые API-функции для получе- ния информации и настройки параметров протокола IP. Эти функции позво- ляют программно использовать возможности следующих стандартных IP- уТИЛИТ:
Ipconfig.exe (или Winipcfg.exe в Microsoft Windows 95) — выводит ин- формацию о конфигурации IP и позволяет освобождать и обновлять IP- адреса, выделенные DHCP;
Netstat.exe — выводит таблицу TCP-соединений, таблицу прослушивае- мых портов UDP и статистику протокола IP;
Route.exe — выводит и редактирует таблицы маршрутизации;
Ш Агр.ехе — выводит и редактирует используемые протоколом разреше-
ния адресов (address resolution protocol, ARP) таблицы трансляции IP-ад- ресов в физические.
Функции, описанные в этом приложении, доступны в основном в Windows
98 и Windows 2000, некоторые — и в Windows NT 4 с Service Pack 4 (или бо- лее поздним), но ни одна не доступна в Windows 95. При обсуждении каждой функции будет указываться соответствующая платформа. Прототипы для всех функций, описанных в приложении, определены в файле Iphlpapi.h. При ком- поновке приложения необходимо подключать библиотеку Iphlpapi.lib.
Возможности утилиты Ipconfig
Утилита Ipconfig поставляет два блока информации: о конфигурации IP и о параметрах IP для каждого сетевого адаптера, установленного на данном компьютере. Чтобы получить информацию о конфигурации IP, воспользуй- тесь функцией GetNetworkParams:
DWORD GetNetworkParams(
PFIXED_INFO pFixedlnfo,
PULONG pOutBufLen
);
Параметр pFixedlnfo — указатель на буфер, куда будет помещена структу- ра FIXED JNFO с информацией о конфигурации IP. Параметр pOutBufLen —
указатель на переменную, задающую размер буфера, который передается че- рез первый параметр. Если этого размера окажется не достаточно, функция

550 Приложение В Вспомогательные функции IP
GetNetworkParams вернет значение ERROR_BUFFER OVERFLOW и определит значение параметра pOutBuJLen, равным необходимому размеру буфера.
Структура FIXED JNFO имеет следующий вид:
s typedef struct
{
char HostName[MAX_HOSTNAHE_LEN + 4] ;
char
t
DomainName[MAX_DOMAIN_NAME_LEN + 4 ] ;
PIP_ADDR_STRING CurrentDnsServer;
IP_ADDR_STRING DnsServerList;
UINT NodeType;
char ScopeId[MAX_SCOPE_ID_LEN + 4];
UINT EnableRouting;
UINT EnableProxy;
UINT EnableDns;
} FIXEO_INFO, *PFIXED_INFO;
Она содержит следующие поля.
HostName — имя данного компьютера, определенное системой DNS.
Ш DomainName — домен DNS, к которому относится компьютер. #
Ш CurrentDnsServei— IP-адрес текущего DNS-сервера.
DnsServerList — связанный список, содержащий используемые данным компьютером DNS-серверы.
II NodeType — способ, которым система распознает имена NetBIOS в сети с IP. Вот список его возможных значений:
Ш BROADCASTNODETYPE — разрешение имен NetBIOS типа Ь-узел;
система использует IP-широковещание для регистрации и разрешения имен NetBIOS;
И PEER_TO_PEER_NODETYPE разрешение имен NetBIOS типа р-узел;
система использует соединение «точка-точка» с сервером имен Net-
BIOS (например, WINS) для регистрации и разрешения имен компью- теров в IP-адреса;
К MIXEDNODETYPE — разрешение имен NetBIOS типа m-узел (mixed node, узел смешанного типа), при котором система использует оба описанных выше способа: сначала метод b-узла, если он не срабаты- вает, то метод р-узла;
HYBRIDNODETYPE разрешение имен NetBIOS типа h-узел (hybrid node, гибридный узел); система также использует оба способа, но сна- чала — метод р-узла, а если он не срабатывает, то метод Ь-узла.
Scopeld задает строку, добавляемую к имени NetBIOS для логического объединения двух и более компьютеров. Это необходимо для соединения
NetBIOS по протоколу TCP/IP.
Я EnableRouting — указывает, будет ли данная система осуществлять мар- шрутизацию IP-пакетов между сетями, к которым подключена.
Ш EnableProxy — указывает, будет ли система работать в сети как прокси- агент системы WINS. Этот агент отвечает на широковещательные запро-

Приложение В Вспомогательные функции IP 551
Я сы по именам, распознанными WINS, и позволяет сетям из компьютеров b-узлов соединяться с серверами в других подсетях, зарегистрированных в WINS.
EnableDns — указывает, будет ли NetBIOS обращаться к DNS с именами,
которые не разрешаются с помощью WINS, рассылки или файла LMHOSTS
Поле DnsServerList структуры FIXED JNFO — это структура IP_ADDR STRING,
представляющая начало связанного списка IP-адресов:
ВПК
typedef s t r u c t _IP_ADDR_STRING
struct _IP_ADDR_STRING« Next;
* IP_ADDRESS_STRING IpAddress; i, Q^
E IP_MASK_STRING IpMask;
DWORD Context; 4*' ^\_
41
'
} IP_ADDR_STRING, *PIP_ADDR_STRING; fry,
1   ...   42   43   44   45   46   47   48   49   50


написать администратору сайта