ローカルIPへのアクセス
CString CNetの:: GetLocalIP() { WSADATA WSADATA。 INT ERR = WSAStartupの(MAKEWORD(2、0)、&WSADATA)。 もし(!=誤る0 ) { リターン "" ; } チャー szHostName [MAX_PATH] = { 0 }。 int型nRetCode; nRetCode =のgethostname(szHostName、はsizeof (szHostName))。 char * lpLocalIP。 PHOSTENTののHostInfo。 もし(!nRetCode = 0 ) { WSACleanup(); リターン "" ; } のHostInfo = のgethostbyname(szHostName)。 lpLocalIP = INET_NTOA(*(構造体 in_addr形式*)* hostinfo-> h_addr_list); WSACleanup(); 返すlpLocalIPを。 }
外部ネットワークのIPを取得します。原則は、その後、ダウンロードしたファイルを解析し、マシンのIPを見つけるために、このページを置く、マシンのIPの下にBaiduの検索を使用することです。
CString CNetの:: GetInternetIP() { チャー BUF [ 2048 ] = { 0 }。 チャー下司[ 1024 ] = { " https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E6%9C%AC%E6%9C%BAip&rsv_pq=bf583ea000057300&rsv_t=a528kuIZ1osYq0OKQDWPTA3DASK7g6NwL8LPMmrOCGIYzoh8w9D %2FjTTt2tk&rqlang = CN&rsv_enter = 1&rsv_sug3 = 1 " }。 CString strPath = " html.tmp " 。 URLDownloadToFile(0、下司、strPath、0 、NULL); std :: 文字列 str_ip("" ); CStringのstrLine変数の値。 CStdioFileファイル。 int型 ICOUNT = 0 ; もし(file.Open(strPath、のCFile :: modeRead)) { 一方(file.ReadString(strLine変数の値)) { ICOUNT ++ 。 std :: 文字列 SLINE = strLine変数の値。 std :: 文字列のアスキー= UTF_82ASCII(SLINE)。 int型のインデックス= ascii.find(" 本机IP " ); もし(! -インデックス= 1 ) { str_ip = ascii.substr(インデックス+ strlenを(" 本机IP ")+ 1); 破ります; } } } file.Close()。 CStringのストリップ; ストリップ = str_ip.c_str()。 ストリップ = strIP.Trim()。 strIP.Replace(" "、"" ); strIP.Replace(" </ span>を"、" " ); 返すストリップを。 }
MACアドレスを取得します:GetAdaptersInfo関数の使用は、当然のことながら、この機能は情報のうち、取得もローカルIPが含まれています
CString CNetの:: GetMacAdress() { char型 MAC [ 32 ] = { 0 }。 CStringのstrMac; PIP_ADAPTER_INFO pAdapterInfo; PIP_ADAPTER_INFO pAdapter = NULL; DWORD dwRetVal = 0 。 pAdapterInfo =(IP_ADAPTER_INFO *)はmalloc(はsizeof (IP_ADAPTER_INFO))。 ULONG ulOutBufLen = はsizeof (IP_ADAPTER_INFO)。 dwRetVal = GetAdaptersInfo(pAdapterInfo、&ulOutBufLen)。 もし(dwRetVal == ERROR_BUFFER_OVERFLOW) { フリー(pAdapterInfo)。 pAdapterInfo =(IP_ADAPTER_INFO *)のmalloc (ulOutBufLen)。 dwRetVal = GetAdaptersInfo(pAdapterInfo、&ulOutBufLen)。 } であれば(dwRetVal == NO_ERROR) { pAdapter = pAdapterInfo。 一方、(pAdapter) { sprintf_s(MAC、" %02X-%02X-%02X-%02X-%02X-%02X "、pAdapter-> [アドレス0 ]、pAdapter-> [アドレス1 ]、pAdapter-> [住所2 ]、pAdapter-> [住所3 ]、pAdapter->アドレス[ 4]、pAdapter->アドレス[ 5 ])。 strMac = MAC; pAdapter = pAdapter-> 次に、 } } 他 { strMac = "" ; } フリー(pAdapterInfo)。 返すstrMacを。 }
GetAdaptersInfo関数は、次のヘッダファイルとlibを導入する必要があります。
書式#include <IPHlpApi.h>
#pragmaコメント(libに、 "Iphlpapi.lib")