0

クライアントの IP アドレスを受け取り、それを gethostbyaddr() で実行する Jython アプリケーションがあります。3 つの IP アドレスを返すこともあれば、ドメイン名 (xxxx.domain.com) を取得することもあります。IP アドレスは動的であるため、完全なコンピュータ名を使用したいと考えています。ドメイン名の返還を妨げているネットワークまたはワークステーションの設定があると判断しました。これは Windows ネットワークです (簡単な編集: IP アドレスはネットワークの内部であり、外部ではありません)。

質問: 完全なコンピューター名を取得するより良い方法はありますか? または、変更できる設定を知っている人はいますか?

コードスニップ:

print socket.gethostbyaddr('{ip}')

ありがとう!

編集:

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

IP アドレスを返すこともあれば、コンピュータ名を返すこともあります。

4

1 に答える 1

0

このように機能しない場合は、バグだと思います。

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 ベータ版または 2.7 アルファ版を試すことができます。

于 2012-07-31T17:30:07.823 に答える