當前位置:編程學習大全網 - 源碼下載 - 如何通過壹個程序得到IP地址的歸屬是最簡單的事情。

如何通過壹個程序得到IP地址的歸屬是最簡單的事情。

有時候在網站應用中,需要顯示對方的IP地址及其歸屬地。壹般來說,有以下幾種方法。

1,使用IP地址數據庫。本地查詢

這種方式的優點是查詢速度最快,不依賴外部網站。

缺點是:要寫壹定的數據庫查詢代碼,而且如果妳的數據庫不是很新,有些IP查詢結果會不正確。

(如果有需要,可以在這裏留言。蝦米可以提供妳能找到的最新的IP地址庫。)

2、使用WebService查詢。

這是最好的網絡服務之壹。

/zh_cn/web_services_item.aspx?id=56647553443555386D2F4D3D

缺點是:要編寫壹定的WebService查詢代碼。而且查詢的結果是XML的形式,需要進壹步分析。

3.調用壹些查詢網站的代碼,比如/

缺點是會返回相當多不相關的代碼,很難解析出自己想要的東西。

4.撥打氣動隔膜泵網站鏈接直接查詢。

例如

/ip.aspx?ip=202.105.19.49

網站會直接返回查詢結果,比如“廣東省佛山市三水區”

不會有任何噪音幹擾。

Win32 API不提供氣動隔膜泵函數直接獲取CPU占用率,但是可以通過提供GetProcessTimes()函數獲取壹個進程占用的CPU時間。通過與實際時間的流逝進行對比,可以得到壹個進程占用CPU的比率。

這裏是完整的C++代碼。

//獲取當前進程的CPU占用率。

類別GetCPUPercentage

{

私人:

臨界_截面cs;//多線程同步的臨界區變量

手柄高清;//空閑進程的句柄

DWORD t 1;//時間戳

int百分比;//上次計算的CPU利用率

_ _ int64 oldp

_ _ int64 FileTimeToInt64(常量FILETIME & amp時間);

int GetTime(_ _ int 64 & amp;proc);//獲取進程占用的CPU時間

公共:

GetCPUPercentage();

~ GetCPUPercentage();

int Get();//獲取CPU占用率

};

GetCPUPercentage::GetCPUPercentage()

{

InitializeCriticalSection(& amp;cs);//初始化線程臨界區變量

百分比= 0;//初始入住率

DWORD PID = GetCurrentProcessId();//獲取當前進程id

HD = open PROCESS(PROCESS _ QUERY _ INFORMATION,FALSE,PID);//通過id獲取進程的句柄。

if( hd==NULL ){

返回;

}

//獲取初始值。

GetTime(oldp);

t 1 = GetTickCount();

}

GetCPUPercentage::~ GetCPUPercentage()

{

如果(高清!=NULL ){

CloseHandle(高清);

}

DeleteCriticalSection(& amp;cs);

}

//時間格式轉換

_ _ int 64 GetCPUPercentage::FILETIME point 64(const FILETIME & amp;時間)

{

ULARGE _整數TT;

tt。LowPart = time.dwLowDateTime

tt。HighPart = time.dwHighDateTime

返回(tt。quad part);

}

//獲取進程占用的CPU時間

int GetCPUPercentage::GetTime(_ _ int 64 & amp;過程)

{

FILETIME創建;

FILETIME退出;

FILETIME ker//內核運行時間

FILETIME用戶;//用戶占用時間

FILETIME now

如果(!GetProcessTimes(高清& amp創建& amp退出& ampker & amp;用戶)){

return(-1);

}

proc =(filetime point 64(ker)+filetime point 64(user))/10000;

return(0);

}

//轉換

int GetCPUPercentage::Get()

{

if( hd==NULL)

return(0);

enter critical section(& amp;cs);

DWORD T2 = GetTickCount();

DWORD dt = T2-t 1;

if(dt & gt;139 ){ //毫秒。使用相對較小的時間片作為計算單位,可以修改該值。

_ _ int64 proc

GetTime(proc);

percent =((proc-oldp)* 100)/dt;

t 1 = T2;

oldp = proc

}

LeaveCriticalSection(& amp;cs);

回報(百分比);

}

//定義壹個全局變量

GetCPUPercentage _ cpu

//以下是用c++ builder編寫的測試示例:

// -

//使用時鐘連續顯示當前的CPU利用率。

void _ _ fast call t form 1::timer 1 timer(to object * Sender)

{/

label 1->;Caption = _cpu。get();

}

// -

//獲取另壹個按鈕

LRESULT WINAPI TestThread(長lParam)

{

int n = lParam

for(int I = 0;我& ltn;i++){

form 1->;Label2->caption = I;

睡眠(12);

}

return(0);

}

//單擊此按鈕將創建壹些線程來保持CPU忙碌。

void _ _ fast call t form 1::button 1 click(to object * Sender)

{

int n = atoi(edit 1->;text . c _ str());

DWORD dwThreadid

創建線程(空

  • 上一篇:QQ個性簽名,要符號
  • 下一篇:JVM是如何工作的呢?
  • copyright 2024編程學習大全網