IPアドレス取得プログラム

Foundations of Python Network Programming
前にJavaでも作ったけど、今度はPythonでIPアドレスの取得プログラムを作ってみる。要はDNSへの問い合わせ。標準入力から受け取ったホスト名称に該当するIPアドレスを返すようにする。

せっかくネットワークの本を買ったんだから、こういうのも作らないと。

ipaddrget.py

import socket
while(1):
name = raw_input()
if name == '':
break
try:
result = socket.getaddrinfo(name,None)
for item in result:
print item[4]
except socket.gaierror:
print "DNS coundn't find %s" % (name)

実行結果。

www.google.com
('66.102.7.147', 0)
('66.102.7.99', 0)
('66.102.7.104', 0)
www.yahoo.com
('66.94.230.48', 0)
('66.94.230.49', 0)
('66.94.230.50', 0)
('66.94.230.75', 0)
('66.94.230.32', 0)
('66.94.230.42', 0)
('66.94.230.44', 0)
('66.94.230.46', 0)
www.hatena.co.jp
('202.181.97.45', 0)
www.yahoe.co.jp
DNS coundn't find www.yahoe.co.jp

getaddrinfoはリストの形で結果を返す関数で、リストの四番目の要素がIPアドレスとポート番号のタプル。今回は実行時にポートを指定していないから0返って来ている模様。ホスト名称が見つからない場合には、socket.gaierrorが返されるから、それに関する処理も入れてみた。

まだ分からないことも多いんで、もう少し突っ込んで学ぶ必要あるな。