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

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


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

dwErrot— код ошибки от процесса согласования РРР;
Ш szNetBiosError — NetBIOS-имя, если во время процесса аутентификации
РРР возникает конфликт имен; если dwError возвращает ERROR_NAME_
EXISTS'JDN_NET, то szNetBiosError получит имя, вызвавшее ошибку;
bLana — идентифицирует NetBIOS-номер LANA, который использовал- ся для установления соединения удаленного доступа.
Если вы укажете перечислимый тип RASP_PppNbf& RasGetProjectionlnfo, то получите структуру RASPPPNBF-.

ГЛАВА 16 Клиент служШЯАб 533
typedef struct _RASPPPNBF f!
< r/ ,
DWORD dwSize;
. DWORD dwError;
DWORD dwNetBiosError;
TCHAR szNetBiosError[NETBIOS_NAME_LEN + 1];
TCHAR szWorkstationName[NETBIOS_NAME_LEN + 1];
BYTE bLana;
} RASPPPNBF;
Поля структуры RASPPPNBF аналогичны полям структуры RASAMB, за ис- ключением двух дополнительных: szWorkstationName и dwNetBiosError. Поле
szWorkstationName получает имя NetBIOS, которое было использовано для идентификации рабочей станции в сети, к которой вы подключаетесь. В
поле dwNetBiosError записывается произошедшая ошибка NetBIOS.
Если определить тип перечисления RASP_Ppplpx, как RasGetProjectionlnfo,
то вы получите структуру RASPPPIPX:
typedef struct _RASPPPIPX
D W 0 R D d w S i z e :
DWORD dwError;
TCHAR szIpxAddress[RAS_MaxIpxAddress + 1];
} RASPPPIPX;
1V ! { w
.
r
Поля определены следующим образом: '
л
' *
:
dwSize — размер (в байтах) структуры RASPPPIPX;
Ш dwError — код ошибки от процесса согласования РРР;
Ш szlpxAddress — строка, представляющая IPX-адрес клиента в удаленной сети.
Если вы определите тип перечисления RASPPppIp, как RasGetProjectionlnfo,
то получите структуру RASPPPIP:
typedef struct _RASPPPIP "'
{ - > \\>л
DWORD dwSize; ,-,т
DWORD dwError; ,|
f
,,
TCHAR szIpAddress[RAS_MaxIpAddress + 1];
TCHAR szServerIpAddress[RAS_MaxIpAddress + 1]; '
} RASPPPIP;
Поля определены следующим образом:
dwSize размер (в байтах) структуры RASPPPIP;
Ш dwError — код ошибки от процесса согласования РРР;
Ш szlpAddress — строка, представляющая IP-адрес клиента в удаленной сети;
Я szServerlpAddress — строка, представляющая IP-адрес сервера.

5 3 4 ЧАСТЬ III Служба удаленного доступа (RAS)
Листинг 16-4 демонстрирует, как выводить IP-адреса, заданные для IP- соединения, устанавливаемого через RAS.
Листинг 16-4. Использование RasGetProjectionlnfo при IP-соединении
lpProjection = (RASPPPIP *) GlobalAlloc(GPTR, cb);
lpProjection->dwSize = sizeof(RASPPPIP);
cb = sizeof(RASPPPIP);
Ret = RasGetProjectionInfo(hRasConn, RASP_PppIp,
lpProjection, &cb);
if (Ret != ERROR_SUCCESS) '
{
printf("RasGetProjectionlnfo failed with error Xd", Ret);
(
return; '!
else
printf("\nRas Client IP address: Xs\n",
lpProjection->szIpAddress);
printf("Ras Server IP address: Xs\n",
lpProjection->szServerIpAddress);
Резюме
В этой главе, завершающей часть III и всю книгу, были рассмотрены основы использования RAS для расширения сетевых возможностей компьютера. Мы описали, как вызывается функция RasDial для взаимодействия с удаленными компьютерами, и то, как далее использовать возможности RAS посредством создания записей телефонного справочника. •
г
.
й
^
г
Ш <
т

Д, Hit
КО! П Р И Л О Ж Е Н И Е
Перечень команд NetBIOS
t,
»)"W
Ь
В этом приложении перечислены и описаны допустимые команды для поля
ncbcommand из структуры NCB, которую следует передать функции Netbios
В описание каждой команды входит таблица, где указано, какие поля вы должны задать для этой команды и какие поля функция Netbios задает перед возвратом. В каждой таблице по две колонки. Первая показывает, является ли данное имя из структуры NCB параметром ввода или вывода. Во второй ко- лонке сообщается, должно ли поле задаваться при вызове NetBIOS. Подроб- ное описание функции Netbios см в главе 1.
Команда NCBADDGRNAME
Команда добавляет имя группы в локальную таблицу имен. Это имя не дол- жно конфликтовать с уникальным, но кто-то другой может использовать его в качестве имени группы. Имена групп в основном применяют как прием- ники дейтаграмм. Номер имени возвращается в поле ncbnum, используемое в операциях с дейтаграммами.
Поле
neb command
ncbretcode
neb Isn
ncb_num
ncb_buffer
neb length
neb callname
neb name
neb rto
ncb_sto
ncb_post
neb lana num.
neb cmd cplt
neb event
(зН
«Д
еД

тэй
*
- л
Ввод или вывод
Ввод
Вывод
Не обязательно
Вывод
Не обязательно
Не обязательно
Не обязательно
Ввод
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Нужно ли задать
Да
Нет
Нет
Нет
Нет
Нет
Нет
Да
Нет
Нет
Нет
Да
Нет
Нет

536 Приложение А Перечень команд NetBIOS
Команда NCBADDNAME
Команда добавляет уникальное имя в локальную таблицу имен. Если имя в сети не уникально, программа выдаст ошибку. Номер имени возвращается в поле ncbjnum, используемом в операциях с дейтаграммами.
Поле
neb command
ncbretcode
ncbjsn
ncbjium
ncbbuffer
ncbjength
neb callname
ncb_name
ncbjrto
ncb_sto
ncb_post
nebjanajnum
neb cmd cplt
ncbevent
Ввод или вывод
Ввод
Вывод
Не обязательно
Вывод
Не обязательно
Не обязательно
Не обязательно
Ввод
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Нужно ли задать
Да
Нет
Нет
Нет
Нет
Нет
Нет
Да
Нет
Нет
Нет
Да
Нет
Нет
Команда NCBASTAT
Команда возвращает сведения о состоянии локального или удаленного адап- тера. При ее вызове поле ncb_buffer должно ссылаться на буфер со структурой
ADAPTER STATUS, за которой следует массив структур NAMEJ3UFFER.
Поле Ввод или вывод Нужно ли задать
ncbcommand Ввод Да
nebjretcode Вывод Нет
ncbjsn He обязательно ., Нет
nebjium Необязательно ,, Нет \ .,
nebjbuffer Ввод и вывод ,, Да
ncbjength Ввод и вывод Да
ncbcallname Ввод Да
nebjname He обязательно Нет
ncbrto He обязательно Нет
ncb_sto He обязательно Нет
ncb_post Ввод Нет
nebjananum Ввод Да
ncbcmdcplt Вывод Нет
ncb_event Ввод Нет

Приложение А Перечень команд NetBIOS 537
Команда NCBCALL
Команда устанавливает сетевое соединение с другим процессом, указанном в поле neb name.
Поле
neb command
neb retcode
neb Isn
ncbjium
neb buffer
neb length
ncbcallname
neb name
ncbrto
neb sto
ncb_post
neb lana пит
neb cmd cplt
neb event
Ввод или вывод
Ввод
Вывод
Вывод
Не обязательно
Не обязательно
Не обязательно
Ввод
Ввод
Ввод
Ввод
Ввод
Ввод
Вывод
Ввод

\
(лит

Нужно ли задать
Да
Нет
Нет _
Нет t ч tyP
1
Нет ,
v
, ","
Нет ч
Да
Д а
" *"" •""*'
Нет
Нет w
Нет
Да <
Нет <'
Нет
Команда NCBCANCEL
Эта команда отменяет предыдущую. Поле ncb_buffer указывает на структуру
NCB с операцией, которую вы хотите отменить. Отмена уведомляющих ко- манд NCBSEND или NCBCHAINSEND разрывает сеанс, отмена их не уведомля- ющих вариантов — нет. Нельзя отменить команды NCBADDGRNAME, NCBA-
DDNAME, NCBCANCEL, NCBDELNAME, NCBRESET, NCBDGSEND, NCBDGSENDBC
uNCBSSTAT.
Поле
nebcommand
neb retcode
ncbjsn
neb num.
nebbuffer
neb length
neb callname
nebname
ncbrto
ncbsto
ncb_post
neb lana_num
neb cmd cplt
neb event
Ввод или вывод
Ввод
Вывод
Не обязательно
Не обязательно
Ввод
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Ввод
Вывод
Не обязательно
Нужно ли задать
Да
Нет
Нет
Нет
Да
Нет
Нет
Нет
Нет
Нет
Нет
Да
Нет
Нет

538 Приложение А Перечень команд NetBtOB
Команда NCBCHAINSEND Х1ЮКЖ бднвмоЖ
Команда отправляет содержимое двух буферов указанному получателю. Мак- симальное количество данных, которое можно отправить, — 128 кб (по 64 кб в каждом буфере). Укажите первый буфер и его длину в полях neb buffer и
ncbjength соответственно. Используйте байты 0-1 из ncbcallname, чтобы задать длину второго буфера, а байты 2-5 — чтобы сослаться на него.
Поле
neb command
neb retcode
ncbjsn
neb пит
ncbj>uffer
neb length
neb callname
neb name
ncbrto
nebsto
ncb_post
neb lana пит
ncb_cmd_cplt
neb event
I Ml
nil
Ввод или вывод
Ввод
Вывод
Ввод
Не обязательно
Ввод
Ввод
Ввод
Не обязательно
Не обязательно
Не обязательно
Ввод
Ввод
Вывод |»;
Ввод
Нужно ли задать
Да
Нет
Да
Нет
Да
Да
Да
Н е т
VK>\
Нет
да
Нет
Нет
Да
Нет
Нет
Команда NCBCHAINSENDNA
Команда отправляет содержимое двух буферов указанному получателю, не ожидая подтверждения. Максимальное количество данных, которое можно отправить, — 128 кб (по 64 кб в каждом буфере). Укажите первый буфер и его длину в полях nebjbuffer и ncbjength соответственно. Используйте бай- ты 0-1 из ncbjoallname, чтобы задать длину второго буфера, а байты 2-5 —
чтобы сослаться на него.
Поле
ncb_command
ncbretcode
ncbjsn
neb пит
neb buffer
ncbjength
ncbjzallname
nebjiame
ncb_rto
ncb_sto
neb post
Ввод или вывод
Ввод
Вывод
Ввод
Не обязательно
Ввод
Ввод
Ввод
Не обязательно
Не обязательно
Не обязательно
Ввод
м
ч
Нужно ли задать
Да
Нет
Да ,\
Нет ^ ^
Да ч
Да
Да
Нет
Нет
Нет
Нет

Поле
neb lana пит
ncbcmdcplt
neb event
Приложение А
Ввод или вывод
Ввод
Вывод
Ввод
Перечень команд NetBIOS 539
продолжение
Нужно ли задать
Да
Нет
Нет
Команда NCBDELNAME
Команда удаляет имя из локальной таблицы имен. Если удаляемое имя связа- но с активными сеансами, возвращается ошибка NRC^ACTSES (OxOF). Если ожи- дают выполнения какие-либо неактивные сеансы — ошибка NRC_NAMERR
(0x17).
Поле
neb command
ncb_retcode
neb Isn
nebjium
neb buffer
neb length
neb callname
neb name
neb rto
neb sto
nebjjost
neb lana пит
neb cmdcplt
ncb_event
Ввод или вывод
Ввод
Вывод
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Ввод
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Нужно ли задать
Да
Нет
Нет
Нет
Нет
Нет
Нет
Да
' t Щ
Нет
Нет
J.,,, Нет «
Да
Нет
Нет
Команда NCBDGRECV
Команда получает дейтаграмму, адресованную локальному имени, связанно- му со значением nebjium. Если ncbjium — OxFF, то команда получает дей- таграммы, адресованные любому локальному имени. Локальное имя может быть именем группы, либо уникальным. Если при отправке дейтаграммы нет команд, ожидающих приема дейтаграмм, данные удаляются. Если предостав- ленный буфер слишком мал, появится сообщение о невозможности завер- шения (NRCJNCOMP — 0x06) и данные будут усечены до размера буфера.
Поле
neb command
neb retcode
neb Isn
neb пит
nebbuffer
Ввод или вывод
Ввод
Вывод
Не обязательно
Ввод
Вывод
Нужно ли задать
Да
Нет
Нет
Да
Да
см. след. стр.

540 Приложение А Перечень команд NetBIOS
продолжение
Поле
ncbjength
neb callname
neb name
neb rto
neb sto
ncb_post
nebjanajvum
neb cmd cplt
ncb_event
Ввод или вывод
Ввод и вывод
Вывод
Не обязательно
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Нужно ли задать
Да
Нет
Нет
Нет
Нет
Нет
Да
Нет
Нет
1 1
1 11
Команда NCBDGRECVBC
Команда получает широковещательную дейтаграмму от любого имени, вы- дающего команды отправки таких дейтаграмм. Если предоставленный буфер слишком мал, появится сообщение о невозможности завершения (NRCJN-
СОМР — ОхОб) и данные будут усечены до размера буфера.
Поле Ввод или вывод Нужно ли задать
nebcommand Ввод Да
ncbretcode Вывод Нет н
ncbjsn He обязательно Нет <
nebjium Ввод Да .1
ncb_buffer Ввод Да л
ncbjength Ввод и вывод Да \.
neb callname Вывод Нет
nebjiame He обязательно Нет si
ncb_rto He обязательно Нет
ncb_sto Необязательно Нет \ • |
ncb_post Ввод Нет
nebjanajnum Ввод Да f
'
ncbcmdcplt Вывод Нет ''
ncbevent Ввод Нет
Команда NCBDGSEND
Команда отправляет дейтаграмму по указанному уникальному или группо- вому имени. Если в адаптере есть отложенная команда приема дейтаграммы для того же самого имени, то адаптер получит свое собственное сообщение.
Выполните локальную команду NCBASTAT — в структуре ADAPTERJ5TATUS
будет возвращен максимальный размер дейтаграммы для базового транспор- тного протокола.

Поле
neb command
neb retcode
ncbjsn
neb пит
neb buffer
nebjength
neb callname
nebjiame
neb rto
ncb_sto
ncb_post -

*
neb lananum
ncbcmdcplt
neb event
Приложение А Перечень команд NetBIOS 54\
Ввод или вывод
Ввод
Вывод
Не обязательно
Ввод
Ввод
Ввод
Ввод
Не обязательно
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод
Команда NCBDGSENDBC
Команда отправляет кальной сети. Только приема дейтаграмм отложенная команда
Нужно ли задать
Да
Нет
Нет
Да
Да
Да
Да
Нет
Нет
Нет
Нет
Да
Нет
Нет широковещательную дейтаграмму каждому узлу в ло компьютеры с ожидающими выполнения командам!
получат сообщение. Если приема дейтаграммы, он сообщение. Широковещательные дейтаграммы меру, упомянутые в описании NCBDGSEND.
Поле
ncb_command
neb retcode
neb Isn
nebnum
neb buffer
nebjength
neb callname
neb name
neb rto
neb sto
ncb_post '
neb lana пит
l
neb cmd cplt ^
neb event
Ввод или вывод
Ввод
Вывод
Ввод
Ввод
Ввод
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Не обязательно
Ввод
Ввод
Вывод
Ввод в локальном адаптере ест получит свое собственно»
имеют ограничения по раз
Нужно ли задать
Да
Нет
Да
Да
Да
Нет
Нет
Нет
Нет
Нет
Нет
Да
Нет
Нет

542 Приложение А Перечень команд NetBIOS
Команда NCBENUM
Команда нумерует LANA. При этом ncbjouffer должен ссылаться на структуру
LANA_ENUM. По возвращении поле length структуры LANA_ENUM будет содер- жать количество номеров LANA на локальном компьютере. Поле lana из
LANA_ENUM заполняется номерами LANA.
Поле Ввод или вывод Нужно ли задать
neb command
neb retcode
ncbjsn
neb пит
ncbjouffer
neb length
ncbcallname
neb name
ncbrto
neb sto
ncbj)ost
neb lana пит
ncb_cmd_cplt
neb event
Ввод
Вывод
He обязательно
He обязательно vm¥
Ввод
Ввод
He обязательно
He обязательно
He обязательно
He обязательно
He обязательно
Ввод
Вывод
Не обязательно
Да
Нет
Нет
Нет
_ Да
Да
Нет
Нет
Нет
Нет
Нет
Да
Нет
Нет
1   ...   40   41   42   43   44   45   46   47   ...   50


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