powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / как узнать IP адрес компьютера?
13 сообщений из 13, страница 1 из 1
как узнать IP адрес компьютера?
    #35229462
roleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как узнать IP адрес компьютера на котором запускается программа?
...
Рейтинг: 0 / 0
как узнать IP адрес компьютера?
    #35229595
ВасВас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT CONNECTION_PROPERTY ('NodeAddress')
...
Рейтинг: 0 / 0
как узнать IP адрес компьютера?
    #35229640
roleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если я не подключен к базе
...
Рейтинг: 0 / 0
как узнать IP адрес компьютера?
    #35229905
Фотография ИвановНН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
см. WinApi
вот рабочий пример на C++ (можно переделать под PB)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
PMIB_IPADDRTABLE pIPAddrTable = NULL;
try {
	DWORD dwSize =  0 ;
	GetIpAddrTable(pIPAddrTable, &dwSize, FALSE);
	pIPAddrTable = (PMIB_IPADDRTABLE)LocalAlloc(LMEM_ZEROINIT, dwSize);
	DWORD r = GetIpAddrTable(pIPAddrTable, &dwSize, TRUE);
	if (r != NO_ERROR) throw "error!";
	for (int i =  0 ; i < pIPAddrTable->dwNumEntries; i++) {
		DWORD addr = pIPAddrTable->table[i].dwAddr;
		printf("\tAddress: %d.%d.%d.%d\n", addr & 0x000000FF, (addr & 0x0000FF00) >>  8 , (addr & 0x00FF0000) >>  16 , (addr & 0xFF000000) >>  24 );
		printf("\tMask:    %ld\n", pIPAddrTable->table[i].dwMask);
		printf("\tIndex:   %ld\n", pIPAddrTable->table[i].dwIndex);
		printf("\tBCast:   %ld\n", pIPAddrTable->table[i].dwBCastAddr);
		printf("\tReasm:   %ld\n", pIPAddrTable->table[i].dwReasmSize);
		printf("\t-------------------------\n");
	}
}
catch(...) {
	printf("\terror");
}
if (pIPAddrTable != NULL) LocalFree(pIPAddrTable);
pIPAddrTable == NULL;
return  0 ;
...
Рейтинг: 0 / 0
как узнать IP адрес компьютера?
    #35229998
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TO ИвановНН

Все давно написано
...
Рейтинг: 0 / 0
как узнать IP адрес компьютера?
    #35230082
Фотография ИвановНН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Black SavageВсе давно написаноОтличный вариант -- значительно проще.
...
Рейтинг: 0 / 0
как узнать IP адрес компьютера?
    #35246542
VadimSokha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем плоха выборка значения из поля DhcpIPAddress раздела Registry:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\{D141EC0B-7618-4388-AF0E-31F889F1404E}\Parameters\Tcpip
?
...
Рейтинг: 0 / 0
как узнать IP адрес компьютера?
    #35246630
Фотография ИвановНН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
больше похоже на хакерство :-)
Лучше все-таки пользоваться функциями, к тому же доступ к таким разделам реестра может быть закрыт.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
как узнать IP адрес компьютера?
    #36396177
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пример: http://www.rgagnon.com/pbdetails/pb-0132.html
Но нужен pbws32.dll. Как можно обойтись без него (использовать только Виндосовские dll-и)?
...
Рейтинг: 0 / 0
как узнать IP адрес компьютера?
    #36396287
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RiskaВот пример: http://www.rgagnon.com/pbdetails/pb-0132.html
Но нужен pbws32.dll. Как можно обойтись без него (использовать только Виндосовские dll-и)?
Если тебе совсем скучно, можешь попробовать перевести вот это на эхотаг. Сомневаюсь, что это получится, но попытка, как известно, не пытка .
...
Рейтинг: 0 / 0
как узнать IP адрес компьютера?
    #36396538
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[script]
Код: plaintext
1.
nvuo_winsock_ip lnvuo_winsock_ip
lnvuo_winsock_ip.uf_get_ip_address()

[nvuo]
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
$PBExportHeader$nvuo_winsock_ip.sru
forward
global type nvuo_winsock_ip from nonvisualobject
end type
type hostent from structure within nvuo_winsock_ip
end type
type wsadata from structure within nvuo_winsock_ip
end type
end forward

type hostent from structure
	unsignedlong		h_name
	unsignedlong		h_aliases
	integer		h_addrtype
	integer		h_length
	unsignedlong		h_addr_list
end type

type wsadata from structure
	unsignedinteger		version 
	unsignedinteger		highversion 
	character		description[ 257 ] 
	character		systemstatus[ 129 ] 
	unsignedinteger		maxsockets 
	unsignedinteger		maxupddg 
	string		 vendorinfo 
end type

global type nvuo_winsock_ip from nonvisualobject autoinstantiate
end type

type prototypes
Function integer gethostname (	Ref string name, integer namelen) Library "ws2_32.dll" Alias for "gethostname;Ansi"
Function ulong gethostbyname (string name	) Library "ws2_32.dll" Alias for "gethostbyname;Ansi"

Subroutine CopyMemoryIP (	Ref hostent Destination, ulong Source, long Length) Library  "kernel32.dll" Alias For "RtlMoveMemory"
Subroutine CopyMemoryIP (	Ref blob Destination, ulong Source, long Length) Library  "kernel32.dll" Alias For "RtlMoveMemory"
Subroutine CopyMemoryIP (	Ref ulong Destination, ulong Source, long Length) Library  "kernel32.dll" Alias For "RtlMoveMemory"

Function long WSAStartup ( long wVersionRequested, Ref wsadata lpWSAData) Library "ws2_32.dll"
Function long WSACleanup () Library "ws2_32.dll"
end prototypes

type variables

end variables

forward prototypes
public function string uf_get_ip_address ()
end prototypes

public function string uf_get_ip_address ();string ls_hostname, ls_ipaddress
nvuo_winsock_ip gn_ping
Integer li_rc, li_namelen
Blob lblb_ipaddr
hostent lstr_host
ULong lul_ptr, lul_ipaddr

li_namelen =  32 
ls_hostname = Space(li_namelen)

li_rc = gethostname(ls_hostname, li_namelen)
If li_rc <>  0  Then
	MessageBox('ERROR', "Error in uf_get_ip_address")
	RETURN 'ERROR'
End If

// get information about host
lul_ptr = gethostbyname(ls_hostname)

If lul_ptr >  0  Then
	// copy structure to local structure
	CopyMemoryIP(lstr_host, lul_ptr,  16 )
	
	// get memory address where ipaddress is located
	CopyMemoryIP(lul_ipaddr, lstr_host.h_addr_list,  4 )
	
	// copy ipaddress to local blob
	lblb_ipaddr = Blob(Space( 4 ),EncodingAnsi!)
	CopyMemoryIP(lblb_ipaddr, lul_ipaddr,  4 )
	
	// Get string from blob
	ls_ipaddress  = String(AscA(String(BlobMid(lblb_ipaddr, 1 , 1 ),EncodingAnsi!)),"##0") + "."
	ls_ipaddress += String(AscA(String(BlobMid(lblb_ipaddr, 2 , 1 ),EncodingAnsi!)),"##0") + "."
	ls_ipaddress += String(AscA(String(BlobMid(lblb_ipaddr, 3 , 1 ),EncodingAnsi!)),"##0") + "."
	ls_ipaddress += String(AscA(String(BlobMid(lblb_ipaddr, 4 , 1 ),EncodingAnsi!)),"##0")
Else
	MessageBox('ERROR', "Error in uf_get_ip_address")
	RETURN 'ERROR'
End If

messagebox('IP-address', ls_ipaddress)

RETURN ls_ipaddress
end function

on nvuo_winsock_ip.create
call super::create
TriggerEvent( this, "constructor" )
end on

on nvuo_winsock_ip.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on

event constructor;wsadata lstr_wsadata
Long ll_rc

// initialize Winsock
ll_rc = WSAStartup( 257 , lstr_wsadata)
If ll_rc <>  0  Then
	MessageBox('ERROR', "WSAStartup Error in constructor")
End If

end event

event destructor;// cleanup Winsock
WSACleanup()

end event
...
Рейтинг: 0 / 0
как узнать IP адрес компьютера?
    #36399610
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
как узнать IP адрес компьютера?
    #38256981
bce_ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно для особо одаренный объяснить :)
попробовала http://www.rgagnon.com/pbdetails/pb-0132.html

в результате GetHostName возвращает квардатики,
и ls_ip получается 0.0.0.0

А вообще задача такая:
Надо перед отправкой письма определить локально пользователь подключился или удаленно (нужно для настройки cdo)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / как узнать IP адрес компьютера?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]