delphi獲取本地IP地址的幾種方法

2021-06-18 19:09:28 字數 3934 閱讀 4552

1樓:衝浪**優化

1、通過登錄檔獲取或修改ip

想到windows會把系統網絡卡相關資訊存入登錄檔,肯定可通過登錄檔讀取具體ip資訊。大致思路是找hkey_local_machine\software\microsoft\windows nt\currentversion\networkcards ,由networkcards得分支表示各個網絡卡的資訊通過servicename到 hkey_local_machine\system\currentcontrolset\services\tcpip\parameters\inte***ces 下找到對應的網絡卡配置詳細資訊,通過對登錄檔的read與write實現讀取或修改ip地址等資訊。

2、通過解析批處理命令結果獲取

在cmd命令列輸入ipconfig可以顯示出當前電腦ip地址,可以考慮先執執行命令"ipconfig /all >ips.txt",然後解析ips.txt檔案得到本機的ip資訊,此方法較繁雜。

3、通過delphi控制元件獲取ip

找到fastnet 下的 tpowersock控制元件,利用 該控制元件localip屬性返回 本機(主要指區域網) ip地址 。 放一個控制元件在窗體上可得到本機ip,方便簡單。

4、通過winsock函式獲取ip

此方法在程式中常用,一般函式如下:

//多網絡卡 將ip地址寫入到列表,求本機ip的話返回ip列表中的第一個即可,該函式要引用 winsock

function getlocaliplist(var iplist:tstringlist):integer;

type

tapinaddr = array[0..10] of pinaddr;

papinaddr = ^tapinaddr;

varhostname: array [0..max_path] of char;

namelen: integer;

wsdata: twsadata;

lphostent: phostent;

i: integer;

pptr: papinaddr;

begin

result := 0;

if wsastartup(makeword(2,0), wsdata) <> 0 then exit;

trynamelen := sizeof(hostname);

fillchar(hostname, namelen, 0);

namelen := gethostname(hostname, namelen);

if namelen = socket_error then exit;

lphostent := gethostbyname(hostname);

if lphostent = nil then exit;

i := 0;

pptr := papinaddr(lphostent^.h_addr_list);

iplist.clear;

while pptr^[i] <> nil do

begin

iplist.add( inet_ntoa(pptr^[i]^));

inc(i);

end;

result := iplist.count;

finally

wsacleanup;

end;

end;

2樓:磊鑫廣告製作

用這個function localip : string;

type

tapinaddr = array [0..10] of pinaddr;

papinaddr = ^tapinaddr;

varphe : phostent;

pptr : papinaddr;

buffer : array [0..63] of char;

i : integer;

ginitdata : twsadata;

begin

wsastartup($101, ginitdata);

result := ' ';

gethostname(buffer, sizeof(buffer));

phe :=gethostbyname(buffer);

if phe = nil then exit;

pptr := papinaddr(phe^.h_addr_list);

i := 0;

while pptr^[i] <> nil do begin

if i=0

then result:=strpas(inet_ntoa(pptr^[i]^))

else result:=result+ ', '+strpas(inet_ntoa(pptr^[i]^));

inc(i);

end;

wsacleanup;

end;

3樓:匿名使用者

function localip : string;

type

tapinaddr = array [0..10] of pinaddr;

papinaddr = ^tapinaddr;

varphe : phostent;

pptr : papinaddr;

buffer : array [0..63] of char;

i : integer;

ginitdata : twsadata;

begin

wsastartup($101, ginitdata);

result := ' ';

gethostname(buffer, sizeof(buffer));

phe :=gethostbyname(buffer);

if phe = nil then exit;

pptr := papinaddr(phe^.h_addr_list);

i := 0;

while pptr^[i] <> nil do begin

if i=0

then result:=strpas(inet_ntoa(pptr^[i]^))

else result:=result+ ', '+strpas(inet_ntoa(pptr^[i]^));

inc(i);

end;

wsacleanup;

end;

delphi 如何獲取本地計算機名和ip地址

4樓:雲南新華電腦學校

uses windows;

function gethostname:string;

varcomputername: array[0..max_computername_length+1] of char;

size: cardinal;

begin

result:='';

size := max_computername_length+1;

getcomputername(computername, size);

result:=strpas(computername);

end;

delphi 獲取區域網所有主機名稱及ip方法

5樓:匿名使用者

嫌棄搜尋慢,那你就用多執行緒好了

6樓:匿名使用者

分都不給,不幫。。。

如何獲取本地ip,如何檢視本機IP地址?

獲取本地ip可以在網路介面卡的詳細資訊裡進行檢視,具體的操作方法如下 1 這裡以膝上型電腦為相關的例子,首先在頁面的右下角方向點選 網路圖示 2 接下來在彈出來的頁面點選 開啟網路和共享中心 3 緊接著點選 更改介面卡設定 4 進入到更改介面卡設定頁面以後,然後選擇電腦已經連線上的無線網路連線並且滑...

自動獲取IP受到限制,自己設的IP本地連線連上了但不能上網

這要看路由器的設定,如果是自動分配,那你自己設定的就不能上,只能隨機分配。反過來一樣。你試試看能不能連線路由器的設定介面,如果可以了那就能上網了。至於一開始的受限應該是ip衝突了,修復下就好。受限制估計是你路由關閉了dhcp功能吧。如果沒有,你可以把路由器復位下!你手動設定的ip對麼?很多比如192...

如何將電腦的ip地址設定為自動獲取

1 找到桌面的網路上的芳鄰,右擊,選擇 屬性 2 在開啟的介面中,找到本地連線,再次右擊,選擇 屬性 3 在彈出來的對話方塊中,選擇internet 協議 tcp ip 雙擊 4 然後在彈出來的對話方塊中,選擇 自動獲得ip地址 就完成了 設定自動獲取ip地址方法 1 右鍵 網路連結 選擇 屬性 開...