On-line: гостей 3. Всего: 3 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 768
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.12.08 18:17. Заголовок: Как узнать IP адрес компьютера ?


Всем привет...

Подскажите как можно из программы узнать IP адрес компа ?
И какой он, динамический или статический ?


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 18 [только новые]





Пост N: 78
Зарегистрирован: 30.05.05
ссылка на сообщение  Отправлено: 24.12.08 21:35. Заголовок: Где-то в инете было ..


Где-то в инете было что-то вроде этого:

//Функция определяющая Имя компьютера и имя пользователя
//и возвращающая массив IP адресов компа
//GetIpStation(@cName,@cUserName)->aHosts
FUNCTION GetIpStation(cName,cUserName)
LOCAL aHosts:=NIL

cName:=NetName(.F.) //F имя компьютера
cUserName:=NetName(.T.) //.T. имя пользователя

InetInit()
aHosts := InetGetHosts(cName)
IF aHosts == NIL
aHosts := InetGetAlias(cName)
ENDIF
InetCleanup()
RETURN aHosts

а статический IP или динамический, это наверное через реестр надо узнавать!


Спасибо: 1 
ПрофильЦитата Ответить



Пост N: 34
Зарегистрирован: 19.12.06
ссылка на сообщение  Отправлено: 25.12.08 11:51. Заголовок: Отсюда можно узнать ..


Отсюда можно узнать все, например 4-й элемент возвращаемого массива ip-адрес
// Fetches the MAC address and prints it
HB_FUNC( GETMACADDRESSES )

{
IP_ADAPTER_INFO AdapterInfo[16]; // Allocate information
// for up to 16 NICs
// http://msdn2.microsoft.com/En-US/library/aa366062.aspx

DWORD dwBufLen = sizeof(AdapterInfo); // Save memory size of buffer

DWORD dwStatus = GetAdaptersInfo( // Call GetAdapterInfo
AdapterInfo, // [out] buffer to receive data
&dwBufLen); // [in] size of receive data buffer

PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo; // Contains pointer to
// current adapter info
char cMacAddress[18];

PHB_ITEM pItem;
PHB_ITEM paAddress = hb_itemArrayNew( 0 );

// Verify return value is valid, no buffer overflow...
if (dwStatus != ERROR_SUCCESS)
{
hb_itemRelease(hb_itemReturn(paAddress));
return;
}

pItem = hb_itemNew(NULL);

do {
PHB_ITEM pSubArray = hb_itemArrayNew(10);

// Description of NIC
hb_arraySet(pSubArray, 1, hb_itemPutC(pItem, pAdapterInfo->Description));

// MAC address
sprintf( cMacAddress, "%02X-%02X-%02X-%02X-%02X-%02X", pAdapterInfo->Address[0], pAdapterInfo->Address[1], pAdapterInfo->Address[2],
pAdapterInfo->Address[3], pAdapterInfo->Address[4], pAdapterInfo->Address[5]);

hb_strUpper( cMacAddress, strlen(cMacAddress));
hb_arraySet(pSubArray, 2, hb_itemPutC(pItem, cMacAddress ));
// GUID of NIC
hb_arraySet(pSubArray, 3, hb_itemPutC(pItem, pAdapterInfo->AdapterName));

// IP Address
hb_arraySet(pSubArray, 4, hb_itemPutC(pItem, pAdapterInfo->IpAddressList.IpAddress.String ));

// IP Mask
hb_arraySet(pSubArray, 5, hb_itemPutC(pItem, pAdapterInfo->IpAddressList.IpMask.String ));

// IP Gateway
hb_arraySet(pSubArray, 6, hb_itemPutC(pItem, pAdapterInfo->GatewayList.IpAddress.String ));

// DHCP server IP & Lease Obtained
if (pAdapterInfo->DhcpEnabled)
{
hb_arraySet(pSubArray, 7, hb_itemPutC( pItem, pAdapterInfo->DhcpServer.IpAddress.String ));
hb_arraySet(pSubArray, 8, hb_itemPutNL(pItem, pAdapterInfo->LeaseObtained ));
} else {
hb_arraySet(pSubArray, 7, hb_itemPutC( pItem, "" ));
hb_arraySet(pSubArray, 8, hb_itemPutNI(pItem, 0 ));
}

// WINS server info - Primary & Secondary ip address
if (pAdapterInfo->HaveWins)
{
hb_arraySet(pSubArray, 9, hb_itemPutC( pItem, pAdapterInfo->PrimaryWinsServer.IpAddress.String ));
hb_arraySet(pSubArray, 10, hb_itemPutC( pItem, pAdapterInfo->SecondaryWinsServer.IpAddress.String ));
} else {
hb_arraySet(pSubArray, 9, hb_itemPutC( pItem, "" ));
hb_arraySet(pSubArray, 10, hb_itemPutC( pItem, "" ));
}

hb_arrayAdd(paAddress, pSubArray);

hb_itemRelease(pSubArray);
pAdapterInfo = pAdapterInfo->Next; // Progress through
// linked list
}
while(pAdapterInfo); // Terminate if last adapter

hb_itemRelease(pItem);
hb_itemRelease(hb_itemReturn(paAddress));
}



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 10
Зарегистрирован: 23.06.08
ссылка на сообщение  Отправлено: 14.02.09 18:13. Заголовок: А как его вызывать ?


Здравствуйте ! А как его вызывать ???
Попробовал вот, что:

Procedure Main()

Clear screen
? GETMACADDRESSES()

wait
Return


///////////////////////////////////////////////////////////
#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>
#include <shlobj.h>

// Fetches the MAC address and prints it
HB_FUNC( GETMACADDRESSES )

{
IP_ADAPTER_INFO AdapterInfo[16]; // Allocate information
// for up to 16 NICs
// http://msdn2.microsoft.com/En-US/library/aa366062.aspx

DWORD dwBufLen = sizeof(AdapterInfo); // Save memory size of buffer

DWORD dwStatus = GetAdaptersInfo( // Call GetAdapterInfo
AdapterInfo, // [out] buffer to receive data
&dwBufLen); // [in] size of receive data buffer

PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo; // Contains pointer to
// current adapter info
char cMacAddress[18];

PHB_ITEM pItem;
PHB_ITEM paAddress = hb_itemArrayNew( 0 );

// Verify return value is valid, no buffer overflow...
if (dwStatus != ERROR_SUCCESS)
{
hb_itemRelease(hb_itemReturn(paAddress));
return;
}

pItem = hb_itemNew(NULL);

do {
PHB_ITEM pSubArray = hb_itemArrayNew(10);

// Description of NIC
hb_arraySet(pSubArray, 1, hb_itemPutC(pItem, pAdapterInfo->Description));

// MAC address
sprintf( cMacAddress, "%02X-%02X-%02X-%02X-%02X-%02X", pAdapterInfo->Address[0], pAdapterInfo->Address[1], pAdapterInfo->Address[2],
pAdapterInfo->Address[3], pAdapterInfo->Address[4], pAdapterInfo->Address[5]);

hb_strUpper( cMacAddress, strlen(cMacAddress));
hb_arraySet(pSubArray, 2, hb_itemPutC(pItem, cMacAddress ));
// GUID of NIC
hb_arraySet(pSubArray, 3, hb_itemPutC(pItem, pAdapterInfo->AdapterName));

// IP Address
hb_arraySet(pSubArray, 4, hb_itemPutC(pItem, pAdapterInfo->IpAddressList.IpAddress.String ));

// IP Mask
hb_arraySet(pSubArray, 5, hb_itemPutC(pItem, pAdapterInfo->IpAddressList.IpMask.String ));

// IP Gateway
hb_arraySet(pSubArray, 6, hb_itemPutC(pItem, pAdapterInfo->GatewayList.IpAddress.String ));

// DHCP server IP & Lease Obtained
if (pAdapterInfo->DhcpEnabled)
{
hb_arraySet(pSubArray, 7, hb_itemPutC( pItem, pAdapterInfo->DhcpServer.IpAddress.String ));
hb_arraySet(pSubArray, 8, hb_itemPutNL(pItem, pAdapterInfo->LeaseObtained ));
} else {
hb_arraySet(pSubArray, 7, hb_itemPutC( pItem, "" ));
hb_arraySet(pSubArray, 8, hb_itemPutNI(pItem, 0 ));
}

// WINS server info - Primary & Secondary ip address
if (pAdapterInfo->HaveWins)
{
hb_arraySet(pSubArray, 9, hb_itemPutC( pItem, pAdapterInfo->PrimaryWinsServer.IpAddress.String ));
hb_arraySet(pSubArray, 10, hb_itemPutC( pItem, pAdapterInfo->SecondaryWinsServer.IpAddress.String ));
} else {
hb_arraySet(pSubArray, 9, hb_itemPutC( pItem, "" ));
hb_arraySet(pSubArray, 10, hb_itemPutC( pItem, "" ));
}

hb_arrayAdd(paAddress, pSubArray);

hb_itemRelease(pSubArray);
pAdapterInfo = pAdapterInfo->Next; // Progress through
// linked list
}
while(pAdapterInfo); // Terminate if last adapter

hb_itemRelease(pItem);
hb_itemRelease(hb_itemReturn(paAddress));
}
#pragma ENDDUMP


Но он выдаёт множество Type mismatch ошибок...

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 35
Зарегистрирован: 19.12.06
ссылка на сообщение  Отправлено: 16.02.09 16:29. Заголовок: добавь #include <..


добавь
#include <iphlpapi.h>



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 11
Зарегистрирован: 23.06.08
ссылка на сообщение  Отправлено: 16.02.09 22:36. Заголовок: Всё равно не пашет


Ещё 14 ошибок выдаёт...
Файл прилагаю

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 36
Зарегистрирован: 19.12.06
ссылка на сообщение  Отправлено: 17.02.09 10:02. Заголовок: там выдает ошибки об..


там выдает ошибки об отсутствии прототипов xharbour функций -
добавь еще
#include "hbapiitm.h"
#include "hbvm.h"



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 13
Зарегистрирован: 23.06.08
ссылка на сообщение  Отправлено: 17.02.09 13:35. Заголовок: Выдает теперь всего ..


Выдает теперь всего одну ошибку:
Error: Unresolved external 'GetAdaptersInfo' referenced from W:\IP2.OBJ


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1077
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 17.02.09 14:03. Заголовок: SkyNET пишет: Выдае..


SkyNET пишет:

 цитата:
Выдает теперь всего одну ошибку:
Error: Unresolved external 'GetAdaptersInfo' referenced from W:\IP2.OBJ



При линковке надо указать библиотеку
iphlpapi.lib
см.тему http://clipper.borda.ru/?1-4-0-00000255-000-0-0-1232701680
тоже самое справедливо и для функций winapi


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 14
Зарегистрирован: 23.06.08
ссылка на сообщение  Отправлено: 17.02.09 17:49. Заголовок: Спасибо большое всем..


Спасибо большое всем !

Выкладываю рабочий пример:
Procedure Main()
LOCAL aDim, nI, nJ

Clear screen
? "Текущий пользователь: ", HB_ANSITOOEM(NetName(.T.))
? "Имя компьютера: ", HB_ANSITOOEM(NetName(.F.))
?
aDim:=GetIpStation()
For nI:=1 to LEN(aDim)
? "IP адрес "+ALLTRIM(STR(nI))+": "+aDim[nI]
Next
?

// Вызов функции из библиотеки ..\BCC55\Lib\PSDK\iphlpapi.lib
// необходимо ее прилинковать к проекту.
aDim := GETMACADDRESSES()
For nI:=1 to LEN(aDim)
? "-"+ALLTRIM(STR(nI))+": " //,VALTYPE(aDim[nI]),LEN(aDim[nI])
FOR nJ := 1 TO 5 //LEN(aDim[nI])
? " "+ALLTRIM(STR(nJ))+"- ",HB_ANSITOOEM(aDim[nI,nJ])
NEXT
Next
wait
Return

//Функция определяющая Имя компьютера и имя пользователя
//и возвращающая массив IP адресов компа
//GetIpStation(@cName,@cUserName)->aHosts
FUNCTION GetIpStation(cName,cUserName)
LOCAL aHosts:=NIL

cName:=NetName(.F.) //F имя компьютера
cUserName:=NetName(.T.) //.T. имя пользователя

InetInit()
aHosts := InetGetHosts(cName)
IF aHosts == NIL
aHosts := InetGetAlias(cName)
ENDIF
InetCleanup()
RETURN aHosts



///////////////////////////////////////////////////////////
#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>
#include <shlobj.h>
#include <iphlpapi.h>
#include "hbapiitm.h"
#include "hbvm.h"

// Fetches the MAC address and prints it
HB_FUNC( GETMACADDRESSES )

{
IP_ADAPTER_INFO AdapterInfo[16]; // Allocate information
// for up to 16 NICs
// http://msdn2.microsoft.com/En-US/library/aa366062.aspx

DWORD dwBufLen = sizeof(AdapterInfo); // Save memory size of buffer

DWORD dwStatus = GetAdaptersInfo( // Call GetAdapterInfo
AdapterInfo, // [out] buffer to receive data
&dwBufLen); // [in] size of receive data buffer

PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo; // Contains pointer to
// current adapter info
char cMacAddress[18];

PHB_ITEM pItem;
PHB_ITEM paAddress = hb_itemArrayNew( 0 );

// Verify return value is valid, no buffer overflow...
if (dwStatus != ERROR_SUCCESS)
{
hb_itemRelease(hb_itemReturn(paAddress));
return;
}

pItem = hb_itemNew(NULL);

do {
PHB_ITEM pSubArray = hb_itemArrayNew(10);

// Description of NIC
hb_arraySet(pSubArray, 1, hb_itemPutC(pItem, pAdapterInfo->Description));

// MAC address
sprintf( cMacAddress, "%02X-%02X-%02X-%02X-%02X-%02X", pAdapterInfo->Address[0], pAdapterInfo->Address[1], pAdapterInfo->Address[2],
pAdapterInfo->Address[3], pAdapterInfo->Address[4], pAdapterInfo->Address[5]);

hb_strUpper( cMacAddress, strlen(cMacAddress));
hb_arraySet(pSubArray, 2, hb_itemPutC(pItem, cMacAddress ));
// GUID of NIC
hb_arraySet(pSubArray, 3, hb_itemPutC(pItem, pAdapterInfo->AdapterName));

// IP Address
hb_arraySet(pSubArray, 4, hb_itemPutC(pItem, pAdapterInfo->IpAddressList.IpAddress.String ));

// IP Mask
hb_arraySet(pSubArray, 5, hb_itemPutC(pItem, pAdapterInfo->IpAddressList.IpMask.String ));

// IP Gateway
hb_arraySet(pSubArray, 6, hb_itemPutC(pItem, pAdapterInfo->GatewayList.IpAddress.String ));

// DHCP server IP & Lease Obtained
if (pAdapterInfo->DhcpEnabled)
{
hb_arraySet(pSubArray, 7, hb_itemPutC( pItem, pAdapterInfo->DhcpServer.IpAddress.String ));
hb_arraySet(pSubArray, 8, hb_itemPutNL(pItem, pAdapterInfo->LeaseObtained ));
} else {
hb_arraySet(pSubArray, 7, hb_itemPutC( pItem, "" ));
hb_arraySet(pSubArray, 8, hb_itemPutNI(pItem, 0 ));
}

// WINS server info - Primary & Secondary ip address
if (pAdapterInfo->HaveWins)
{
hb_arraySet(pSubArray, 9, hb_itemPutC( pItem, pAdapterInfo->PrimaryWinsServer.IpAddress.String ));
hb_arraySet(pSubArray, 10, hb_itemPutC( pItem, pAdapterInfo->SecondaryWinsServer.IpAddress.String ));
} else {
hb_arraySet(pSubArray, 9, hb_itemPutC( pItem, "" ));
hb_arraySet(pSubArray, 10, hb_itemPutC( pItem, "" ));
}

hb_arrayAdd(paAddress, pSubArray);

hb_itemRelease(pSubArray);
pAdapterInfo = pAdapterInfo->Next; // Progress through
// linked list
}
while(pAdapterInfo); // Terminate if last adapter

hb_itemRelease(pItem);
hb_itemRelease(hb_itemReturn(paAddress));
}
#pragma ENDDUMP


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 15
Зарегистрирован: 23.06.08
ссылка на сообщение  Отправлено: 19.02.09 14:47. Заголовок: Кто может подсказать..


Кто может подсказать расшифровку:
-1:
1- Realtek RTL8169/8110 Family Gigabit Ethernet NIC - Минипорт планировщика пакетов
2- 00-16-17-93-26-BE
3- {F51B2DB7-F494-4E60-BB11-AEBEC436ACBF}
4- 11.61.201.3
5- 255.255.255.0
-2:
1- WAN (PPP/SLIP) Interface
2- 00-53-45-00-00-00
3- {D93658A8-7789-4FBF-8AD4-9A12CABA8A2D}
4- 61.25.245.40
5- 255.255.255.255


1) Это - сетевуха
2) Физический адрес (МАС) сетевухи
3) ??? - Что ЭТО ?
4) и 5) сами адреса.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 32
Зарегистрирован: 17.10.05
ссылка на сообщение  Отправлено: 19.02.09 16:06. Заголовок: Я предполагаю догадк..


Я предполагаю догадку, что это ОЕМ-код PCI-устройства.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 93
Зарегистрирован: 05.06.07
ссылка на сообщение  Отправлено: 24.02.09 07:26. Заголовок: 5 - маска подсетки..


5 - маска подсетки

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 15.06.09 12:13. Заголовок: А можно ли узнать ma..


А можно ли узнать macaddress карты принтсервера зная его IP ?

Спасибо: 0 
Цитата Ответить
постоянный участник


Пост N: 690
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.06.09 13:23. Заголовок: пробуйте nbtstat -a ..


пробуйте nbtstat -a ххх.ххх.ххх.ххх

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 15.06.09 14:03. Заголовок: Не, не пойдет. Для л..


Не, не пойдет. Для любого принтера дает MAC 00-00-00-00-00

Спасибо: 0 
Цитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 15.06.09 15:48. Заголовок: Похоже, это можно ре..


Похоже, это можно решить через ARP. Правда таблица соответствий IP-MAC хранится тока на текущий момент, но ее всегда можно обновить пинганув любой из известных IP.

Хотелось бы еще определять уникальность всяких локальных USB устройств(сканеров, принтеров)

Спасибо: 0 
Цитата Ответить
постоянный участник




Пост N: 5859
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.05.18 15:06. Заголовок: Всем привет. Передел..


Всем привет.
Переделал функцию для Харбора:
// Функция возвращающая массив IP адресов компа 
FUNCTION GetIpStation()
LOCAL cName, aHosts := NIL

cName:=NetName(.F.) //F имя компьютера

InetInit()

aHosts := InetGetHosts(cName)
IF aHosts == NIL
aHosts := InetGetAlias(cName)
ENDIF

InetCleanup()

RETURN aHosts

Не собирается прога, пишет ошибку:
Harbour 3.2.0dev (r1803161710)
Copyright (c) 1999-2018, https://harbour.github.io/
OBJ\demo.c:
Turbo Incremental Link 5.66 Copyright (c) 1997-2002 Borland
Error: Unresolved external '_HB_FUN_INETINIT' referenced from W:\HB_PROJECT\PROJECT\GETINFOAPPLICATION\OBJ\DEMO.OBJ
Error: Unresolved external '_HB_FUN_INETGETHOSTS' referenced from W:\HB_PROJECT\PROJECT\GETINFOAPPLICATION\OBJ\DEMO.OBJ
Error: Unresolved external '_HB_FUN_INETGETALIAS' referenced from W:\HB_PROJECT\PROJECT\GETINFOAPPLICATION\OBJ\DEMO.OBJ
Error: Unresolved external '_HB_FUN_INETCLEANUP' referenced from W:\HB_PROJECT\PROJECT\GETINFOAPPLICATION\OBJ\DEMO.OBJ
hbmk2[demo]: Error: Running linker. 2


Прочитал совет
Pasha пишет:

 цитата:
Если при линковке вы увидите такую ошибку, то не спешите задавать вопрос
"У меня такая-то ошибка, что мне делать ?"
Сначала поищите в каталоге Harbour\lib текст "HB_FUN_<имя>"
Если в какой-то либе такой текст найдется, просто добавьте ее в список библиотек для сборки программы



Список большой получается:
hbextern.lib 
hbrtl.lib
hbssl.lib
hbssls.lib
hbtip.lib
xhb.lib

Какую библиотеку нужно добавить к себе в проект, чтобы заработала эта функция ?



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5860
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.05.18 15:13. Заголовок: Вопрос снят. Нашёл м..


Вопрос снят. Нашёл методом перебора - xhb.lib !

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 667
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет