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 右鍵 網路連結 選擇 屬性 開...