新聞中心
linux中獲取IP地址的函數(shù)簡介

站在用戶的角度思考問題,與客戶深入溝通,找到舞鋼網(wǎng)站設(shè)計與舞鋼網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、申請域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋舞鋼地區(qū)。
Linux操作系統(tǒng)是世界流行的類Unix操作系統(tǒng),不僅擁有強勁的計算能力,還提供了多樣的硬件支持,網(wǎng)絡(luò)支持也是其長處之一。這里我們主要介紹一下Linux操作系統(tǒng)里如何獲取IP地址的方法及函數(shù)。
在 Linux 中使用函數(shù) gethostbyname() 獲取 IP 地址。gethostbyname() 函數(shù)用于從主機名或者IP地址取得主機信息,例如:IP地址,網(wǎng)絡(luò)地址類型,子網(wǎng)掩碼,廣播地址,主機名等。
代碼如下:
#include
#include
#include
#include
#include
#include
char* get_ip_by_name(const char* hostname)
{
struct hostent *host;
if((host=gethostbyname(hostname))==NULL)
{
return NULL;
}
char *ip = inet_ntoa(*(struct in_addr *)*host->h_addr_list);
printf("IP address is :%s\n", ip);
return ip;
}
int main()
{
char *hostname="www.example.com";
get_ip_by_name(hostname);
return 0;
}
另外,Linux也提供了getifaddrs()函數(shù)用于獲取每個接口的IP地址,代碼如下:
#include
#include
#include
#include
#include
#include
char* get_local_ip(){
struct ifaddrs *ifaddr, *ifa;
int family, s, n;
char host[NI_MAXHOST];
if (getifaddrs(&ifaddr) == -1)
{
printf("Error: getifaddrs");
return NULL;
}
/* Walk through linked list, maintaining head pointer so we can free list later */
for (ifa = ifaddr, n = 0; ifa != NULL; ifa = ifa->ifa_next, n++)
{
if (ifa->ifa_addr == NULL)
continue;
family = ifa->ifa_addr->sa_family;
/* Display interface name and family (including symbolic form of the latter for the common families) */
printf("%-8s %s (%d)\n", ifa->ifa_name,
(family == AF_PACKET) ? "AF_PACKET" :
(family == AF_INET) ? "AF_INET" :
(family == AF_INET6) ? "AF_INET6" : "???",
family);
/* For an AF_INET* interface address, display the address */
if (family == AF_INET || family == AF_INET6)
{
s = getnameinfo(ifa->ifa_addr,
(family == AF_INET) ? sizeof(struct sockaddr_in) :
sizeof(struct sockaddr_in6),
host,
NI_MAXHOST,
NULL,
0,
NI_NUMERICHOST);
if (s != 0){
printf("getnameinfo() failed: %s\n", gai_strerror(s));
return NULL;
}
printf("\taddress: \n", host);
}
}
return 0;
}
int main()
{
get_local_ip();
return 0;
}
總結(jié): Linux 平臺下可以通過gethostbyname()函數(shù)獲取主機名對應(yīng)的IP地址,并且也支持通過getifaddrs()函數(shù)獲取每個接口的IP地址。它們都是利用了IP協(xié)議與DNS解析協(xié)議,以便更加高效的確定IP地址,為網(wǎng)絡(luò)通訊提供極大的支持。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
分享名稱:Linux中獲取IP地址的函數(shù)簡介(LINUX獲取ip函數(shù))
網(wǎng)頁URL:http://m.fisionsoft.com.cn/article/cdeedge.html


咨詢
建站咨詢
