西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)Delphi → Delphi編程中怎么獲取電腦上網(wǎng)卡的Ip地址

Delphi編程中怎么獲取電腦上網(wǎng)卡的Ip地址

前往專題相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:西西整理時(shí)間:2012/8/20 17:07:46字體大。A-A+

作者:佚名點(diǎn)擊:105次評(píng)論:0次標(biāo)簽: 網(wǎng)卡

通過注冊(cè)表獲取IP地址
想到Windows會(huì)把系統(tǒng)網(wǎng)卡相關(guān)信息存入注冊(cè)表,肯定可通過注冊(cè)表讀取具體ip信息。大致思路是找HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards ,由NetworkCards得分支表示各個(gè)網(wǎng)卡的信息通過ServiceName到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces 下找到對(duì)應(yīng)的網(wǎng)卡配置詳細(xì)信息,通過對(duì)注冊(cè)表的read與write實(shí)現(xiàn)讀取或修改ip地址等信息。

通過解析批處理命令結(jié)果獲取

在cmd命令行輸入ipconfig可以顯示出當(dāng)前電腦ip地址,可以考慮先執(zhí)執(zhí)行命令"Ipconfig /all >Ips.txt",然后解析Ips.txt文件得到本機(jī)的Ip信息,此方法較繁雜。

通過delphi控件獲取Ip

找到fastnet 下的 Tpowersock控件,利用 該控件localip屬性返回 本機(jī)(主要指局域網(wǎng)) ip地址 。 放一個(gè)控件在窗體上可得到本機(jī)IP,方便簡(jiǎn)單。

通過WinSock函數(shù)獲取Ip

此方法在程序中常用,一般函數(shù)如下:

//多網(wǎng)卡 將IP地址寫入到列表,求本機(jī)IP的話返回IP列表中的第一個(gè)即可,該函數(shù)要引用 WinSock

function GetLocalIpList(var IpList:TStringList):Integer;

type

TaPInAddr = array[0..10] of PInAddr;

PaPInAddr = ^TaPInAddr;

var

HostName: 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;

try

NameLen := 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;

該函數(shù)用到的主要Winsock方法有:

(1)WSAStartup,即WSA(Windows SocKNDs Asynchronous,Windows異步套接字)的啟動(dòng)命令。是Windows下的網(wǎng)絡(luò)編程接口軟件Winsock1 或 Winsock2 里面的一個(gè)命令(Ps:Winsock 是由Unix下的BSD Socket發(fā)展而來,是一個(gè)與網(wǎng)絡(luò)協(xié)議無關(guān)的編程接口)。為了在應(yīng)用程序當(dāng)中調(diào)用任何一個(gè)Winsock API函數(shù),首先第一件事情就是必須通過WSAStartup函數(shù)完成對(duì)Winsock服務(wù)的初始化,因此需要調(diào)用WSAStartup函數(shù)。使用Socket的程序在使用Socket之前必須調(diào)用WSAStartup函數(shù)。該函數(shù)的第一個(gè)參數(shù)指明程序請(qǐng)求使用的Socket版本,其中高位字節(jié)指明副版本、低位字節(jié)指明主版本;操作系統(tǒng)利用第二個(gè)參數(shù)返回請(qǐng)求的Socket的版本信息。當(dāng)一個(gè)應(yīng)用程序調(diào)用WSAStartup函數(shù)時(shí),操作系統(tǒng)根據(jù)請(qǐng)求的Socket版本來搜索相應(yīng)的Socket庫,然后綁定找到的Socket庫到該應(yīng)用程序中。以后應(yīng)用程序就可以調(diào)用所請(qǐng)求的Socket庫中的其它Socket函數(shù)了。函數(shù)定義如下:

  int WSAStartup ( WORD wVersionRequested, LPWSADATA lpWSAData );wVersionRequested

 、 wVersionRequested:一個(gè)WORD(雙字節(jié))型數(shù)值,指定了應(yīng)用程序需要使用的Winsock規(guī)范的最高版本。高位字節(jié)指出副版本(修正)號(hào),低位字節(jié)指明主版本號(hào)。

⑵lpWSAData 指向WSADATA數(shù)據(jù)結(jié)構(gòu)的指針,用來接收Windows Sockets實(shí)現(xiàn)的細(xì)節(jié)。

本函數(shù)必須是應(yīng)用程序或DLL調(diào)用的第一個(gè)Windows Sockets函數(shù)。它允許應(yīng)用程序或DLL指明Windows Sockets API的版本號(hào)及獲得特定Windows Sockets實(shí)現(xiàn)的細(xì)節(jié)。應(yīng)用程序或DLL只能在一次成功的WSAStartup()調(diào)用之后才能調(diào)用進(jìn)一步的Windows Sockets API函數(shù)。

  為支持日后可能和Windows Sockets 1.1有功能上差異的Windows Sockets實(shí)現(xiàn)及應(yīng)用程序,在WSAStartup()中規(guī)定了一個(gè)協(xié)議。WSAStartup()的調(diào)用方和Windows Sockets DLL互相通知對(duì)方它們可以支持的最高版本,并且互相確認(rèn)對(duì)方的最高版本是可接受的。在WSAStartup()函數(shù)的入口,Windows Sockets DLL檢查了應(yīng)用程序所需的版本。如果所需版本低于DLL支持的最高版本,則調(diào)用成功并且DLL在wHighVersion中返回它所支持的最高版本,在

  wVersion中返回它的高版本和wVersionRequested中的較小者。然后Windows Sockets DLL就會(huì)假設(shè)應(yīng)用程序?qū)⑹褂脀Version.如果WSDATA結(jié)構(gòu)中的wVersion域?qū)φ{(diào)用方來說不可接收,它就應(yīng)調(diào)用WSACleanup()函數(shù)并且要么去另一個(gè)Windows Sockets DLL中搜索,要么初始化失敗。

  本協(xié)議允許Windows Sockets DLL和Windows Sockets應(yīng)用程序共同支持一定范圍的Windows Sockets版本。如果版本范圍有重疊,應(yīng)用程序就可以成功地使用Windows Sockets DLL。下列的圖表給出了WSAStartup()在不同的應(yīng)用程序和Windows Sockets DLL版本中是如何工作的:

  應(yīng)用程序版本 DLL版本 wVersionRequested wVersion wHighVersion 最終結(jié)果

  1.1 1.1 1.1 1.1 1.1 use 1.1

  1.0 1.1 1.0 1.1 1.0 1.0 use 1.0

  1.0 1.0 1.1 1.0 1.0 1.1 use 1.0

  1.1 1.0 1.1 1.1 1.1 1.1 use 1.1

  1.1 1.0 1.1 1.0 1.0 失敗

  1.0 1.1 1.0 -- -- WSAVERNOTSUPPORTED

  1.0 1.1 1.0 1.1 1.1 1.1 1.1 use 1.1

  1.1 2.0 1.1 2.0 1.1 1.1 use 1.1

2.0 1.1 2.0 1.1 1.1 失敗

返回值:0 成功。否則返回下列的錯(cuò)誤代碼之一。注意通常依靠應(yīng)用程序調(diào)用WSAGetLastError()機(jī)制獲得的錯(cuò)誤代碼是不能使用的,因?yàn)閃indows Sockets DLL可能沒有建立"上一錯(cuò)誤"信息儲(chǔ)存的客戶數(shù)據(jù)區(qū)域。

  關(guān)于Windows Sockets提供者的說明:

  每一個(gè)Windows Sockets應(yīng)用程序必須在進(jìn)行其它Windows Sockets API調(diào)用前進(jìn)行WSAStartup()調(diào)用。這樣,本函數(shù)就可以用于初始化的目的。

  進(jìn)一步的說明在WSACleanup()的說明中有討論。

錯(cuò)誤代碼

  WSASYSNOTREADY 指出網(wǎng)絡(luò)通信依賴的網(wǎng)絡(luò)子系統(tǒng)還沒有準(zhǔn)備好。

  WSAVERNOTSUPPORTED 所需的Windows Sockets API的版本未由特定的Windows Sockets實(shí)現(xiàn)提供。

WSAEINVAL 應(yīng)用程序指出的Windows Sockets版本不被該DLL支持。

(2)WSACleanup函數(shù)

int WSACleanup (void);

應(yīng)用程序在完成對(duì)請(qǐng)求的Socket庫的使用后,要調(diào)用WSACleanup函數(shù)來解除與Socket庫的綁定并且釋放Socket庫所占用的系統(tǒng)資源。

WSAStartup應(yīng)該與WSACleanup成對(duì)使用,WSAStartup的功能是初始化Winsock DLL,WSACleanup是來解除與Socket庫的綁定并且釋放Socket庫所占用的系統(tǒng)資源。 在Windows下,Socket是以DLL的形式實(shí)現(xiàn)的。在DLL內(nèi)部維持著一個(gè)計(jì)數(shù)器,只有第一次調(diào)用WSAStartup才真正裝載DLL,以后的 調(diào)用只是簡(jiǎn)單的增加計(jì)數(shù)器,而WSACleanup函數(shù)的功能則剛好相反,每調(diào)用一次使計(jì)數(shù)器減1,當(dāng)計(jì)數(shù)器減到0時(shí),DLL就從內(nèi)存中被卸載!因此,你 調(diào)用了多少次WSAStartup,就應(yīng)相應(yīng)的調(diào)用多少次的WSACleanup.

(3)gethostname()

  【函數(shù)原型】

int PASCAL FAR gethostname (char FAR * name, int namelen);

  【使用說明】

  該函數(shù)可以獲取本地主機(jī)的主機(jī)名,其中:

  name:用于指向所獲取的主機(jī)名的緩沖區(qū)的指針。

  Namelen:緩沖區(qū)的大小,以字節(jié)為單位。

返回值:若無錯(cuò)誤,返回0;否則,返回錯(cuò)誤代嗎。

(4)gethostbyname()

  【函數(shù)原型】

struct hostent FAR * PASCAL FAR gethostbyname(const char FAR * name);

  【使用說明】

  該函數(shù)可以從主機(jī)名數(shù)據(jù)庫中得到對(duì)應(yīng)的"主機(jī)"。

  該函數(shù)唯一的參數(shù)name就是前面調(diào)用函數(shù)gethostname()得到的主機(jī)名。若無錯(cuò)誤,剛返回一個(gè)指向hostent結(jié)構(gòu)的指針,它可以標(biāo)識(shí)一個(gè)"主機(jī)"列表。

    wifi軟件
    (25)wifi軟件
    雖然現(xiàn)在很多互聯(lián)網(wǎng)廠商都發(fā)布了旗下的無線硬件產(chǎn)品,不過對(duì)于擁有內(nèi)置無線網(wǎng)卡的用戶來說我們完全可以通過下載一些軟件來共享網(wǎng)絡(luò),F(xiàn)在獵豹小米等都開發(fā)了隨身,如果不想花錢買這些產(chǎn)品,這里西西給大家整理了一些免費(fèi)的共享軟件下載,希望對(duì)大家有幫助。免費(fèi)免費(fèi)集成于安全衛(wèi)士中,在主界面的功能大全中點(diǎn)擊更多就能找到,新安裝用戶需要在未添加服務(wù)中找到免費(fèi)圖標(biāo),并點(diǎn)擊完成初始化安裝,或直接在搜索框中輸入也能找到該工具...更多>>
    • WIFI共享精靈2012.10.11.001 官方版

      05-12 / 19KB

      推薦理由:WIFI共享精靈采用Connectify內(nèi)核的無線局域網(wǎng)wifi共享軟件,使用和下載都是免費(fèi)的!更新日志:WIFI共享精靈
    • 獵豹免費(fèi)wifi校園神器V5.1.1608241

      12-29 / 11.3M

      推薦理由:眾所周知校園網(wǎng)的網(wǎng)絡(luò)是有限制的,基本上都是無法開啟wifi共享,不過現(xiàn)在不一樣了,獵豹免費(fèi)wifi校園神器發(fā)
    • WiFi共享大師v2.3.6.1 官方版

      01-14 / 9.9M

      推薦理由:WiFi共享大師下載,WiFi共享大師可以在有無線網(wǎng)卡的電腦上直接創(chuàng)建免費(fèi)的WiFi網(wǎng)絡(luò)了,手機(jī)、平板電腦等便攜
    • 金山衛(wèi)士WiFi一鍵共享4.7.3.3366 綠

      08-04 / 1.3M

      推薦理由:金山衛(wèi)士WiFi一鍵共享,令你的無線設(shè)備輕松上網(wǎng)!通過電腦創(chuàng)建WiFi熱點(diǎn),使智能手機(jī)、平板電腦等設(shè)備免費(fèi)無
    • WIFI共享精靈手機(jī)版v1.0.0 官方最新

      01-28 / 1.4M

      推薦理由:WIFI共享精靈手機(jī)版是一款可以讓你使用手機(jī)免費(fèi)開啟wifi的工具,安裝WiFi共享精靈手機(jī)版,一鍵開啟
    • 新毒霸wifi共享2.1.7941 綠色版

      05-12 / 3.3M

      推薦理由:新毒霸WiFi共享,無論您在酒店、圖書館,或去親朋好友家拜訪時(shí),只要有電腦可以上網(wǎng),就可以使用毒霸WiFi共
    免費(fèi)wifi
    (70)免費(fèi)wifi
    免費(fèi)只得是可以免費(fèi)使用的手機(jī)軟件,安全衛(wèi)士免費(fèi)共享精靈獵豹免費(fèi)等軟件均能輕松實(shí)現(xiàn)。在日常生活中,我們用到手機(jī)免費(fèi)軟件的時(shí)候非常多,無論是在工作環(huán)境還是家庭生活中都離不開免費(fèi),西西為您推薦最好用的手機(jī)免費(fèi)軟件免費(fèi)軟件哪個(gè)好除了獵豹免費(fèi)存在不少的兼容性問題外,安全衛(wèi)士和共享精靈的表現(xiàn)令人滿意。不過對(duì)于絕大多數(shù)用戶來說,集成于安全衛(wèi)士中的免費(fèi),其操作更簡(jiǎn)單方便,適合實(shí)不同年齡段的用戶使用。...更多>>
    360wifi
    (20)360wifi
    西西專區(qū)為您提供所有相關(guān)客戶端下載,包含隨身各版本所有驅(qū)動(dòng)和免費(fèi)是什么只是一個(gè)模式,就是插在你聯(lián)網(wǎng)的電腦上,擴(kuò)散信號(hào),你手機(jī)可以搜到并且免費(fèi)上網(wǎng)無線有哪些免費(fèi)手機(jī)版免費(fèi)電腦版隨身驅(qū)動(dòng)電腦版隨身手機(jī)版連我獨(dú)立版隨身版驅(qū)動(dòng)...更多>>
    wifi熱點(diǎn)
    (40)wifi熱點(diǎn)
    西西軟件園提供大量免費(fèi)的熱點(diǎn)軟件,現(xiàn)在很多廠商都發(fā)布了隨身,可以給筆記本設(shè)置熱點(diǎn),然后供手機(jī)等電子設(shè)備無線上網(wǎng),看電視劇電影啥的不用擔(dān)心卡頓,再也不用擔(dān)心流量超標(biāo)或不夠用啦,F(xiàn)在獵豹小米等都開發(fā)了隨身,如果不想花錢買這些產(chǎn)品,那么以下的電腦熱點(diǎn)軟件就很適合大家啦...更多>>
    獵豹免費(fèi)wifi
    (13)獵豹免費(fèi)wifi
    獵豹免費(fèi)不用購買任何硬件。綠色純凈無需安裝,下載運(yùn)行后電腦瞬間變無線路由器。從此手機(jī)免費(fèi)上網(wǎng),從此盡享無線快樂,,獵豹免費(fèi)有哪些版本獵豹免費(fèi)官網(wǎng)目前發(fā)布了獵豹免費(fèi)原版獵豹免費(fèi)校園神器版和獵豹免費(fèi)萬能驅(qū)動(dòng)版本,后續(xù)相信還會(huì)有更多版本誕生哦獵豹免費(fèi)官網(wǎng)地址......,,手機(jī)平板電腦筆記本如何連接上網(wǎng),即無線局域網(wǎng),無線設(shè)備通過基站通常稱為熱點(diǎn)或無線互相連接,構(gòu)成一個(gè)內(nèi)部局域網(wǎng)。我們想用手機(jī)連接免費(fèi)上網(wǎng),開啟的...更多>>
    • 獵豹免費(fèi)wifi校園神器V5.1.1608241

      12-29 / 11.3M

      推薦理由:眾所周知校園網(wǎng)的網(wǎng)絡(luò)是有限制的,基本上都是無法開啟wifi共享,不過現(xiàn)在不一樣了,獵豹免費(fèi)wifi校園神器發(fā)
    • 獵豹免費(fèi)WiFiv5.1.7609.5 萬能驅(qū)動(dòng)

      01-01 / 52.6M

      推薦理由:獵豹免費(fèi)WiFi是一款免費(fèi)、極簡(jiǎn)的無線路由器,用戶只需下載并運(yùn)行它,就能將電腦瞬間變成免費(fèi)WiFi,從而讓手
    • 解決獵豹免費(fèi)wifi WIN8\8.1 64 卸

      04-25 / 24KB

      推薦理由:您的電腦是否有遇到電腦無故出現(xiàn)無法撥號(hào),提示720錯(cuò)誤的問題,如果有出現(xiàn)的,請(qǐng)查看是否以下現(xiàn)象:到設(shè)備管
    • 新毒霸wifi共享2.1.7941 綠色版

      05-12 / 3.3M

      推薦理由:新毒霸WiFi共享,無論您在酒店、圖書館,或去親朋好友家拜訪時(shí),只要有電腦可以上網(wǎng),就可以使用毒霸WiFi共
    • WIFI共享精靈4.0.1129 官方最新版

      12-06 / 6.2M

      推薦理由:WIFI共享精靈只需一步,讓你的電腦“一秒種變熱點(diǎn)”給你的手機(jī)、IPAD、touch等共享上網(wǎng)。WIFI共享精靈可以用
    • 獵豹清理大師5.16.2 官方手機(jī)版

      02-10 / 21.6M

      推薦理由:獵豹清理大師(原金山清理大師)是金山網(wǎng)絡(luò)研發(fā)的針對(duì)智能手機(jī)的專業(yè)清理軟件,截止2013年12月,已成為全球

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)