我有一个Jython应用程序,它获取客户机的IP地址,然后通过gethostbyaddr()运行它。有时它返回三个ip地址,有时我们得到一个域名(xxxx.domain.com)。我们希望使用完整的计算机名称,因为IP地址是动态的。我们已经确定有一些网络或工作站设置阻止了域名的返回。这是一个Windows网络(快速编辑: IP地址在我们的网络内部,而不是外部)。
所以问题是:有没有更好的方法来获取完整的计算机名称,或者是否有人恰好知道我们可以更改的设置?
代码片段:
print socket.gethostbyaddr('{ip}')谢谢!
编辑:
print socket.getfqdn( socket.gethostbyaddr('{ip}')[0] ) 有时返回IP地址,有时返回计算机名称。
发布于 2012-08-01 01:30:08
如果它不是这样工作的,我会说它是一个bug:
stromberg@aw50 ~/src/stackoverflow/pyc-from-java $ /usr/local/jython-2.5.3b1/bin/jython
Jython 2.5.3b1 (2.5:5fa0a5810b25, Feb 22 2012, 12:39:02)
[Java HotSpot(TM) 64-Bit Server VM (Sun Microsystems Inc.)] on java1.6.0_31
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> import platform
>>> platform.node()
'aw50'
>>> socket.gethostbyname('aw50')
'10.0.30.50'
>>> socket.gethostbyaddr('10.0.30.50')
('aw50.av1.ca.us.gaikai.int', ['aw50.av1.ca.us.gaikai.int'], ['10.0.30.50'])
>>> socket.gethostbyaddr('10.0.30.50')[0]
'aw50.av1.ca.us.gaikai.int'
>>> 你可以试试最新的2.5beta或2.7alpha。
https://stackoverflow.com/questions/11745614
复制相似问题