2014-05-22 186 views
3

我想當地私營機的地址,運行下面的代碼:套接字錯誤 - 蟒蛇

socket.gethostbyaddr(socket.gethostname()) 

給出了錯誤:

socket.herror: [Errno 2] Host name lookup failure 

我知道我可以看到本地計算機的地址通過使用

socket.gethostbyname(socket.gethostname()) 

但它表明我的網絡(或計算機)和ifcofig的公共地址顯示的另一個地址爲我的WLAN。有人可以幫我解決這個問題嗎?謝謝

+0

你輸入插座? – ruddra

+2

@ruddra如果她不這樣做,那會導致完全不同的錯誤('NameError'),這似乎並不是問題。 –

+0

是的,我沒有導入套接字和安裝nscd – Maria

回答

1

我相信你會發現netifaces在這裏更有用一點。

它似乎是一個跨平臺的庫來處理網絡接口。

例子:

>>> from netifaces import interfaces, ifaddresses 
>>> interfaces() 
['lo', 'sit0', 'enp3s0', 'docker0'] 
>>> ifaddresses("enp3s0") 
{17: [{'broadcast': 'ff:ff:ff:ff:ff:ff', 'addr': 'bc:5f:f4:97:5a:69'}], 2: [{'broadcast': '10.0.0.255', 'netmask': '255.255.255.0', 'addr': '10.0.0.2'}], 10: [{'netmask': 'ffff:ffff:ffff:ffff::', 'addr': '2001:470:edee:0:be5f:f4ff:fe97:5a69'}, {'netmask': 'ffff:ffff:ffff:ffff::', 'addr': 'fe80::be5f:f4ff:fe97:5a69%enp3s0'}]} 
>>> 
>>> ifaddresses("enp3s0")[2][0]["addr"] 
'10.0.0.2' # <-- My Desktop's LAN IP Address. 
+0

tnx工作得很好,是我想要的,但有沒有辦法找到使用套接字的IP地址? – Maria

+0

不,不是真的。不像你描述的那樣。 「套接字」模塊只提供了你已經看到的兩個功能,並且它們最多也是有限的。 –

+0

tnx澄清 – Maria