python獲取本機的IP


方法一: 
通常使用socket.gethostbyname()方法即可獲取本機IP地址,但有時候獲取不到(比如沒有正確設置主機名稱),示例代碼如下:

1 import socket
2 #獲取本機電腦名
3 myname = socket.gethostname()
4 #獲取本機ip
5 myaddr = socket.gethostbyname(myname)
6 print(myaddr)

方法二:

這個方法獲取本機服務器的IP。沒有任何的依賴。

而是利用 UDP 協議來實現的,生成一個UDP包,把自己的 IP 放入到 UDP 協議頭中,然后從UDP包中獲取本機的IP。

這個方法並不會真實的向外部發包,所以用抓包工具是看不到的。但是會申請一個 UDP 的端口,所以如果經常調用也會比較耗時的,這里如果需要可以將查詢到的IP給緩存起來,性能可以獲得很大提升。

 1 import socket
 2 
 3 def get_host_ip():
 4     """
 5     查詢本機ip地址
 6     :return: ip
 7     """
 8     try:
 9         s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
10         s.connect(('8.8.8.8', 80))
11         ip = s.getsockname()[0]
12     finally:
13         s.close()
14 
15     return ip
16 
17 if __name__ == '__main__':
18     print(get_host_ip())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM