獲取本地ip(乙個或多個都能取)

2021-06-07 21:03:38 字數 1583 閱讀 5590

//在使用這個函式時先在相應的.cpp檔案中新增下面的**(標頭檔案和庫)

#include #include #include "wtypes.h"

#ifdef _windows_

#undef _windows_

#endif

#pragma   comment(lib,   "ws2_32.lib ")

string ctaskdeal::getlocalipaddress()

; gethostname(local, sizeof(local));

hostent* ph = gethostbyname(local);

if (ph == null)

return "";

in_addr addr;

hostent *host=gethostbyname(local);

/*當有多個ip時,j就是所有ip的個數 inet_ntoa(*(in_addr*)host->h_addr_list[i] 這裡的i就是對應的每個ip

for(int i=0;;i++)

int j = i+1;

*/ memcpy(&addr, ph->h_addr_list[0], sizeof(in_addr)); // 這裡的0代表第乙個,填1就是第二個了

string localip;

localip.assign(inet_ntoa(addr));

wsacleanup();

return localip;

}

下面是乙個簡單的小例項

用vector容器將ip存起來,然後逐條列印出來

#include #include #include #include "wtypes.h"

#ifdef _windows_

#undef _windows_

#endif

#pragma comment(lib, "ws2_32.lib ")

using namespace std;

vectorm_iplist;

void getlocalipaddress()

char local[255] = ;

gethostname(local, sizeof(local));

hostent* ph = gethostbyname(local);

if (ph == null)

in_addr addr;

hostent *host=gethostbyname(local);

string localip;

//當有多個ip時,j就是所有ip的個數 inet_ntoa(*(in_addr*)host->h_addr_list[i] 這裡的i就是對應的每個ip

for(int i=0;;i++)

} wsacleanup();

vector::iterator it;

for (it = m_iplist.begin();it != m_iplist.end();it++)

{ cout

如何在本地進行乙個IP訪問多個網域名稱

本文是以apache伺服器為例 解決方案一 通過埠來區分不同的站點 2配置httpd.conf檔案 檔案位置 apache conf httpd.conf 啟用http vhosts.conf檔案,去掉 如下圖 3.配置我們的httpd vhosts.conf檔案 檔案路徑如上圖 4.在hosts檔...

多個網域名稱公用乙個IP

由於公司內網有多台伺服器的http服務要對映到公司外網靜態ip,如果用路由的埠對映來做,就只能一台內網伺服器的80埠對映到外網80埠,其他伺服器的80埠只能對映到外網的非80埠。非80埠的對映在訪問的時候要網域名稱加上埠,比較麻煩。並且公司入口路由最多只能做20個埠對映。肯定以後不夠用。然後k兄就提...

乙個ip繫結多個網域名稱

乙個ip繫結多個網域名稱 ip位址一樣,不一樣的是不同的埠號,不同的埠號對應不同的網域名稱 在http vhost.conf裡面如下配置 新增新的位址,繫結同乙個ip,但是埠號不一樣 這裡是81 乙個apache可以監聽多個埠,啟動81埠 在httpd.conf裡面搜尋listen 新增listen...