Как мне определить собственный IP адрес из Delphi 1?
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, так как это не включается в поставку Delphi 1.; необходимый мне код я взял из tcpip component pack (просто вырезал его оттуда). [000204]