linux程式設計獲取本機IP位址的三種方法

2021-09-08 12:04:41 字數 2549 閱讀 3811

這是一項不太清晰而且沒有多大意義的工作。乙個原因是網路位址的設定非常靈活而且都是允許使用者進行個性化設定的,比如一台計算機上可以有多塊物理網絡卡或者虛擬網絡卡,乙個網絡卡上可以繫結多個ip位址,使用者可以為網絡卡設定別名,可以重新命名網絡卡,使用者計算機所在網路拓撲結構未知,主機名設定是乙個可選項並且同樣可以為乙個計算機繫結多個主機名等,這些資訊都會有影響。脫離了網路連線,單獨的網路位址沒有任何意義。程式設計中遇到必須獲取計算機ip的場景,應該考慮將這一選項放到配置檔案中,由使用者自己來選擇。

通過google,程式設計獲取ip位址大約有以下三種思路:

1. 通過gethostname()和gethostbyname()

#include

#include

#include

#include

#include

#include

int main()

return 0;

}執行:

[whb@jcwkyl c]$ ./local_ip

hostname: jcwkyl.jlu.edu.cn

address list: 10.60.56.90      

2. 通過列舉網絡卡,api介面可檢視man 7 netdevice

/***來自stackoverflow: */

#include

#include

#include

#include

#include

#include

int main (int argc, const char * ar**) else if (ifaddrstruct->ifa_addr->sa_family==af_inet6)

ifaddrstruct=ifaddrstruct->ifa_next;

}return 0;

}執行 :

[whb@jcwkyl c]$ ./local_ip2

lo ip address 127.0.0.1

eth0 ip address 10.60.56.90

eth0:1 ip address 192.168.1.3

lo ip address ::

eth0 ip address ::2001:da8:b000:6213:20f:1fff

eth0 ip address 0:0:fe80::20f:1fff

3. 開啟乙個對外界伺服器的網路連線,通過getsockname()反查自己的ip

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!

這是一項不太清晰而且沒有多大意義的工作。乙個原因是網路位址的設定非常靈活而且都是允許使用者進行個性化設定的,比如一台計算機上可以有多塊物理網絡卡或者虛擬網絡卡,乙個網絡卡上可以繫結多個ip位址,使用者可以為網絡卡設定別名,可以重新命名網絡卡,使用者計算機所在網路拓撲結構未知,主機名設定是乙個可選項並且同樣可以為乙個計算機繫結多個主機名等,這些資訊都會有影響。脫離了網路連線,單獨的網路位址沒有任何意義。程式設計中遇到必須獲取計算機ip的場景,應該考慮將這一選項放到配置檔案中,由使用者自己來選擇。

通過google,程式設計獲取ip位址大約有以下三種思路:

1. 通過gethostname()和gethostbyname()

#include

#include

#include

#include

#include

#include

int main()

return 0;

}執行:

[whb@jcwkyl c]$ ./local_ip

hostname: jcwkyl.jlu.edu.cn

address list: 10.60.56.90      

2. 通過列舉網絡卡,api介面可檢視man 7 netdevice

/***來自stackoverflow: */

#include

#include

#include

#include

#include

#include

int main (int argc, const char * ar**) else if (ifaddrstruct->ifa_addr->sa_family==af_inet6)

ifaddrstruct=ifaddrstruct->ifa_next;

}return 0;

}執行 :

[whb@jcwkyl c]$ ./local_ip2

lo ip address 127.0.0.1

eth0 ip address 10.60.56.90

eth0:1 ip address 192.168.1.3

lo ip address ::

eth0 ip address ::2001:da8:b000:6213:20f:1fff

eth0 ip address 0:0:fe80::20f:1fff

3. 開啟乙個對外界伺服器的網路連線,通過getsockname()反查自己的ip

Linux 獲取本機IP位址

linux 獲取本機ip位址 說明 family at inet ipv4 family at inet6 ipv6 address 提取得到的ip位址所要儲存的位址 size strlen sampleip 192.168.123.128 max ipv4 15 某些標頭檔案應在其他方面,在本程式...

SOCKET 程式設計 獲取本機IP 位址

源程式 include include include include include include include include include include define port 7778 define maxdatasize 1024 int main setsockopt socke...

獲取本機IP位址

cstring strlocalip char szhostname 64 memset szhostname,0x00,sizeof szhostname gethostname szhostname,sizeof szhostname phostent phost gethostbyname s...