国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Delphi > 正文

用Delphi程序獲取撥號(hào)連接的動(dòng)態(tài)IP地址

2019-11-17 05:07:08
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
p>  在WIN9X下,假如安裝了撥號(hào)網(wǎng)絡(luò),則在WINDOWS系統(tǒng)的系統(tǒng)目錄System下將有兩個(gè)撥號(hào)網(wǎng)絡(luò)治理程序庫(kù)RasApi32.DLL和RasApi16.DLL,我們可利用其中的RAS系列函數(shù)來(lái)獲取和設(shè)置撥號(hào)連接網(wǎng)絡(luò)的信息。當(dāng)然是可以獲取撥號(hào)連接的動(dòng)態(tài)ip地址了。在Delphi幫助文件中,有相關(guān)RAS函數(shù)的具體說(shuō)明。 一、先解釋一些要用到的數(shù)據(jù)常量和數(shù)據(jù)結(jié)構(gòu)。 const
RAS_MaxDeviceType = 16;//設(shè)備類型名稱長(zhǎng)度
RAS_MaxEntryName = 256;//連接名稱最大長(zhǎng)度
RAS_MaxDeviceName = 128;//設(shè)備名稱最大長(zhǎng)度
RAS_MaxIpAddress = 15;//IP地址的最大長(zhǎng)度
Rasp_PppIp = $8021;//撥號(hào)連接的協(xié)議類型,該數(shù)值表示PPP連接type
HRASCONN = DWord;//撥號(hào)連接句柄的類型
RASCONN = record//活動(dòng)的撥號(hào)連接的句柄和設(shè)置信息
dwSize : DWORD;//該結(jié)構(gòu)所占內(nèi)存的大小(Bytes),
一般設(shè)置為SizeOf(RASCONN)
hrasconn : HRASCONN;//活動(dòng)連接的句柄
szEntryName : array[0..RAS_MaxEntryName] of char;
//活動(dòng)連接的名稱
szDeviceType : array[0..RAS_MaxDeviceType] of char;
//活動(dòng)連接的所用的設(shè)備類型
szDeviceName : array[0..RAS_MaxDeviceName] of char;
//活動(dòng)連接的所用的設(shè)備名稱
end;
TRASPPPIP = record//活動(dòng)的撥號(hào)連接的動(dòng)態(tài)IP地址信息
dwSize : DWORD;//該結(jié)構(gòu)所占內(nèi)存的大小(Bytes),
一般設(shè)置為SizeOf(TRASPPPIP)
dwError : DWORD;//錯(cuò)誤類型標(biāo)識(shí)符
szIpAddress : array[ 0..RAS_MaxIpAddress ] of char;
//活動(dòng)的撥號(hào)連接的IP地址
end;
二、接著要解釋要用到的兩個(gè)RAS函數(shù)。 //獲取所有活動(dòng)的撥號(hào)連接的信息(連接句柄和設(shè)置信息)
function RasEnumConnections( var lPRasconn : RASCONN ;
//接收活動(dòng)連接的緩沖區(qū)的指針
var lpcb: DWORD;//緩沖區(qū)大小
var lpcConnections : DWORD//實(shí)際的活動(dòng)連接數(shù)
) : DWORD; stdcall;
function RasEnumConnections;external Rasapi32.dll
name RasEnumConnectionsA;
//獲取指定活動(dòng)的撥號(hào)連接的動(dòng)態(tài)IP信息
function RasGetProjectionInfo(
hrasconn : HRasConn;//指定活動(dòng)連接的句柄
rasprojection : DWORD;//RAS連接類型
var lpprojection : TRASPPPIP;//接收動(dòng)態(tài)IP信息的緩沖區(qū)
var lpcb : DWord//接收緩沖區(qū)的大小
) : DWORD;stdcall;
ction RasGetProjectionInfo;external
Rasapi32.dll name RasGetProjectionInfoA;
  這兩個(gè)函數(shù)的返回值為0時(shí)表示執(zhí)行成功,非0表示錯(cuò)誤代碼。 三、下面要討論如何用上面的兩個(gè)RAS函數(shù)獲取撥號(hào)連接的動(dòng)態(tài)IP地址   首先,要用函數(shù)RasEnumConnections列出已建立的活動(dòng)撥號(hào)連接的信息,其中包括連接名稱、連接句柄、連接設(shè)備類型和設(shè)備名稱;然后根據(jù)連接句柄用函數(shù)RasGetProjectionInfo獲取連接對(duì)應(yīng)的一個(gè)TRASPPPIP結(jié)構(gòu),其中包括一個(gè)成員屬性szIpAddress即為動(dòng)態(tài)IP地址。具體請(qǐng)參見以下程序片段和注釋信息。 procedure TForm1.Button1Click(Sender: TObject);
const
MaxConnections = 10;//假設(shè)最多有10個(gè)活動(dòng)的撥號(hào)連接
var
connections : array[0..MaxConnections-1] of RASCONN;
//撥號(hào)連接數(shù)組
longSize : dword;
intAvailabelConnections : dword;
//活動(dòng)的撥號(hào)連接的實(shí)際數(shù)目
intIndex : integer;
strTemp : string;
dwResult : DWORD;
dwSize : DWORD;
RASpppIP : TRASPPPIP;
//活動(dòng)的撥號(hào)連接的動(dòng)態(tài)IP地址信息
begin
connections[ 0 ].dwSize := sizeof(RASCONN);
longSize := MaxConnections * connections[ 0 ].dwSize;
//接收活動(dòng)連接的緩沖區(qū)大小
intAvailabelConnections := 0;

//獲取所有活動(dòng)的撥號(hào)連接的信息(連接句柄和設(shè)置信息)
dwResult := RasEnumConnections( connections[ 0 ],
longSize,intAvailabelConnections );
if 0 $#@60; $#@62; dwResult then
memo1.lines.add( 錯(cuò)誤: + inttostr( dwResult ) )
else
begin
memo1.lines.add( 現(xiàn)有的活動(dòng)連接有 +
IntToStr( intAvailabelConnections ) + 個(gè));
//顯示所有活動(dòng)的撥號(hào)連接的信息(設(shè)置信息和動(dòng)態(tài)IP地址)
for intIndex := 0 to intAvailabelConnections - 1 do
begin
//顯示一個(gè)活動(dòng)的撥號(hào)連接的設(shè)置信息
strTemp := 連接名稱:
+ StrPAS( connections[ intIndex ].szEntryName )
+ ,設(shè)備類型:
+ StrPAS( connections[ intIndex ].szDeviceType )
+ ,設(shè)備名稱:
+ StrPAS( connections[ intIndex ].szDeviceName );
memo1.lines.add( strTemp );
//顯示一個(gè)活動(dòng)的撥號(hào)連接的動(dòng)態(tài)IP地址
dwSize := SizeOf(RASpppIP);
RASpppIP.dwSize := dwSize;
dwResult := RASGetProjectionInfo
( connections[ intIndex ].hRasConn,
RASP_PppIp,RasPPPIP,dwSize);//獲取動(dòng)態(tài)IP地址
if 0 $#@60; $#@62; dwResult then
memo1.lines.add(
錯(cuò)誤: + inttostr( dwResult ))
else
memo1.lines.add(
動(dòng)態(tài)地址: + StrPas(RASpppIP.szIPAddress));
end;
end;
end;
以上程序在PWIN98+Delphi3.0下調(diào)試通過(guò)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 梓潼县| 怀安县| 香格里拉县| 宜兰市| 乌拉特中旗| 应城市| 乌拉特中旗| 水城县| 汤原县| 阳朔县| 和田县| 阿拉善左旗| 沈阳市| 台州市| 个旧市| 浙江省| 鹿泉市| 鸡西市| 景泰县| 西吉县| 古蔺县| 太原市| 皮山县| 河北省| 新乡市| 奉节县| 岚皋县| 侯马市| 灌南县| 阜宁县| 麟游县| 崇礼县| 永福县| 西乌| 临桂县| 邳州市| 大英县| 洛扎县| 上虞市| 通江县| 弥勒县|