【问题标题】:J/Python gethostbyaddr() returns: ip or domain?J/Python gethostbyaddr() 返回:ip 还是域?
【发布时间】:2012-07-31 17:20:28
【问题描述】:

我有一个 Jython 应用程序,它获取客户端的 IP 地址,然后通过 gethostbyaddr() 运行它。有时它会返回三倍的 ip 地址,有时我们会得到一个域名 (xxxx.domain.com)。我们希望使用完整的计算机名称,因为 IP 地址是动态的。我们已经确定某些网络或工作站设置阻止了域名的返回。这是一个 Windows 网络(快速编辑:IP 地址在我们的网络内部,而不是外部)。

所以问题是:有没有更好的方法来获取完整的计算机名称,或者是否有人碰巧知道我们可以更改的设置?

代码片段:

print socket.gethostbyaddr('{ip}')

谢谢!

编辑:

 print socket.getfqdn( socket.gethostbyaddr('{ip}')[0] ) 

有时返回 IP 地址,有时返回计算机名。

【问题讨论】:

    标签: python windows-7 jython


    【解决方案1】:

    如果它不能像这样工作,我会说这是一个错误:

    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.5 beta 或 2.7 alpha。

    【讨论】:

    • 这对服务器有效;但是我们正在使用 Tomcat+Jython 来提供 Web 应用程序。我们需要客户端的 IP 地址/完整的计算机名称。
    • 也许你已经这样做了,但如果没有尝试 socket.getpeername docs.python.org/library/socket.html#socket.socket.getpeername...
    • 很遗憾,我们的 Jython 版本似乎没有安装此模块。
    猜你喜欢
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多