2016-05-26 6 views
1

を失敗したのgetaddrinfoは、私は、次のURLからテキストファイルにアクセスするために願っています:gaierror:[errnoが110​​04]

http://www.pythonlearn.com/code/intro-short.txt

私のコードは、私はエラーを取得しておく

import socket 

socket.getaddrinfo('127.0.0.1', 8080) 
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
mysock.connect(('http://www.pythonlearn.com', 80)) 
mysock.send('GET http://www.pythonlearn.com/code/intro-short.txt HTTP/1.0\n\n') 

です:gaierror: [Errno 11004] getaddrinfo failed

これを手伝ってもらえますか?

ありがとうございました。

+0

インターネット接続を確認し、DNSサーバーが機能しているかどうかを確認してください。そのエラーは、Pythonがアドレスを解決できなかったことを意味します – noteness

答えて

1

mysock.connect(('http://www.pythonlearn.com', 80))では、タプルの最初の要素は、 'http://'を除いたホスト名(またはアドレス)にする必要があります。

だからmysock.connect(('www.pythonlearn.com', 80))が動作するはずです。

ちなみに、socket.getaddrinfo('127.0.0.1', 8080)は、連絡先のサーバーではなく、ローカルホストのアドレス情報を取得します。ですから、この声明は不要です。

+0

私はこれを試して、新しいエラーが発生します:TypeError: 'str'ではなくバイトのようなオブジェクトが必要です – Dawn

+0

新しいエラーは最後のステートメントから発生します。 Python 3を使用しているので、ネットワーク経由で送受信されるデータは文字列ではなくバイトでなければなりません。これは、文字列リテラルの前に文字 'b'を置くことで解決できます:' mysock.send(b'GET http://www.pythonlearn.com/code/intro-short.txt HTTP/1.0 \ n \ n ') ' –

+0

それは動作します。どうもありがとうございます。 – Dawn

関連する問題