snad |
Отправлено: 17.01.2006, 13:46 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
Подскажите плиз, каким образом, зная IP машины, получить ее NetBIOS имя в сети? |
|
AVC |
Отправлено: 17.01.2006, 14:09 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
gethostbyadr
Это возможно далеко не всегда. Вот писал статью на эту тему.
|
|
Gedeon |
Отправлено: 17.01.2006, 14:10 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
GetHostByAddr должно подойти.
|
|
snad |
Отправлено: 17.01.2006, 14:25 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
GetHostByAddr не подходит.
Можно ли это сделать ф-цией WNetGetResourceInformation?
///////////////////////
Спасибо за примерчик. Много полезного.
Отредактировано snad — 17/01/2006, 14:33 |
|
Guest |
Отправлено: 17.01.2006, 15:19 |
|
Не зарегистрирован
|
Может есть архив с файлом "ICMP.h" и всеми с ним связанными. |
|
Guest |
Отправлено: 17.01.2006, 17:03 |
|
Не зарегистрирован
|
icmp.h
CODE |
//---------------------------------------------------------------------------
#ifndef ICMPH
#define ICMPH
#include <windows.h>
//#pragma link "icmp_imp.lib"
typedef struct ip_option_information {
u_char Ttl; // Time To Live (used for traceroute)
u_char Tos; // Type Of Service (usually 0)
u_char Flags; // IP header flags (usually 0)
u_char OptionsSize; // Size of options data (usually 0, max 40)
u_char FAR *OptionsData; // Options data buffer
} IPINFO, *PIPINFO; // size=8 bytes
typedef struct icmp_echo_reply {
u_long Address; // source address
u_long Status; // IP status value
u_long RTTime; // Round Trip Time in milliseconds
u_short DataSize; // reply data size
u_short Reserved; //
void FAR *Data; // reply data buffer
IPINFO Options; // reply options
} ICMPECHO; // size=28 bytes = 1c hex
/*
extern "C" __declspec(dllexport)
HANDLE WINAPI IcmpCreateFile (void);
extern "C" __declspec(dllexport)
BOOL WINAPI IcmpCloseHandle (HANDLE);
extern "C" __declspec(dllexport)
DWORD WINAPI IcmpSendEcho(
HANDLE IcmpHandle, // handle returned from IcmpCreateFile()
u_long DestAddress, // destination IP address (in network order)
LPVOID RequestData, // pointer to buffer to send
WORD RequestSize, // length of data in buffer
IPINFO *RequestOptns, //
char *ReplyBuffer, // ICMPECHO + RequestData
DWORD ReplySize, // sizeof(ICMPECHO) + RequestSize
DWORD Timeout // time in milliseconds to wait for reply
);
*/
//---------------------------------------------------------------------------
#endif
| |
|
snad |
Отправлено: 01.02.2006, 12:32 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
to AVC:
В каких случаях твоя программка возвращает WSAETIMEDOUT? |
|
avc* |
Отправлено: 01.02.2006, 13:46 |
|
Не зарегистрирован
|
Я так полагаю (судя из названия) что эту ошибку программа ПОЛУЧАЕТ когда достигается предел времени ожидания (возращают функции, работающие с сокетами).
Отредактировано AVC — 01/02/2006, 13:09 |
|
snad |
Отправлено: 01.02.2006, 16:47 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
Есть одна проблема. Все работает отлично, но когда пытаюсь узнать информацию с компьютера начальника ПОЛУЧАЕТ эту ошибку. Хотя машина 100% в сети, ping из командной строки возвращает time<1ms. В чем дело? |
|
AVC |
Отправлено: 02.02.2006, 09:12 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE (snad @ 01/02/2006, 15:47) | Есть одна проблема. Все работает отлично, но когда пытаюсь узнать информацию с компьютера начальника ПОЛУЧАЕТ эту ошибку. Хотя машина 100% в сети, ping из командной строки возвращает time<1ms. В чем дело? |
То, что машина в сети еще не означает что она поддерживает netbios.
Для того, что бы узнать netbios имя надо иметь сам netbios . Может у начальника его поддержка не установлена. И даже если установлена то пинг идет по 7 порту а nbn по 137, который может быть просто закрыт. |
|
snad |
Отправлено: 03.02.2006, 10:57 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
Так есть способ 100% узнать NetBIOS по IP?
Может напрямую к базе wins сервера подключаться и вытягивать инфу? |
|
Guest |
Отправлено: 03.02.2006, 11:40 |
|
Не зарегистрирован
|
QUOTE |
Так есть способ 100% узнать NetBIOS по IP?
|
Нет, так как NetBIOS'а (кстати детища Microsoft, если не ошибаюсь) может просто не быть на том обродовании, которое отзывается на этот IP .
|
|
snad |
Отправлено: 03.02.2006, 20:45 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
Понятно конечно, раз нет поддержки протокола NetBIOS ни о каком имени нет речи. Что же с теми, на которых есть? |
|