搬運來源: https://www.cnblogs.com/lianshuiwuyi/p/11636876.html
Python獲取無線局域網IP
本文記錄使用Python獲取本機IP的兩種方法。
通過hostname來獲取本機IP
import socket print(socket.gethostbyname(socket.gethostname()))
此方法是先獲取hostname,然后在通過hostname來查看本機的IP。不推薦此方法,因為若是在/etc/hosts
中將hostnam設置為127.0.0.1
,那么獲取到的就是127.0.0.1
,而非本機的真實IP。
通過UDP獲取本機IP
import socket try: s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.connect(('8.8.8.8',80)) ip = s.getsockname()[0] finally: s.close() print(ip)
此方法利用UDP協議,生成一個UDP包,將自己的IP放入UDP協議頭中,然后再從中獲取本機的IP。此方法雖然不會真實向外發包,但仍然會申請一個UDP的端口,所以如果頻繁調用的話也是比較耗時的;可以將查詢到的IP緩存在別處以供使用。