Определение своего IP адреса |
|
Написал Ярослав Гасов
|
19.10.2009 |
function my_ip_address: longint; const bufsize = 255; var buf: pointer; RemoteHost: PHostEnt; (* Не освобождайте это! *) begin buf := nil; try getmem(buf, bufsize); winsock.gethostname(buf, bufsize); (* это может работать и без сети *) RemoteHost := Winsock.GetHostByName(buf); if RemoteHost = nil then my_ip_address := winsock.htonl($07000001) (* 127.0.0.1 *) else my_ip_address := longint(pointer(RemoteHost^.h_addr_list^)^); finally if buf <> nil then freemem(buf, bufsize); end; result := winsock.ntohl(result); end;
Вначале возвращается локальный сетевой адрес компьютера, а затем, если он не равен 127.0.0.1, стандартный IP адрес. Единственное, что вам необходимо, это наличие winsock.dcu/winsock.pas.
|