0
私は、HTTPプロトコルを使用してソケットに接続し、URLを取得するためにpythonを使用する方法を学んでいます。誰かが私が間違っているかもしれない箇所を指摘するのに役立つことができますか?ソケットに接続しようとしてエラーが発生しました
Pythonのコード:
# Networking
## Connect to a Socket
import socket
mysock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org', 80)) # Host, Port Number
cmd = 'GET http://data.pr4e.org/intro-short.txt HTTP/1.0\r\n\r\n'.encode()
mysock.send(cmd)
while TRUE:
data = mysock.recv(512)
if (len(data)<1):
break
print(data.decode())
mysock.close()
私は、Windows 10のコマンドプロンプト上でプログラムを実行します。
C:\Users\Kane\Desktop>python networking.py
私は、次のエラーメッセージが出ます:
Traceback (most recent call last):
File "networking.py", line 7, in <module>
mysock.connect(('data.pr4.org', 80)) # Host, Port Number
File "C:\Users\Kane\Anaconda2\lib\socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.gaierror: [Errno 11001] getaddrinfo failed
感謝を。
は "data.pr4.org"に接続する有効なサーバーですか? – coder
実際のエラーを知ることができたのは、どのタイプの例外であるかをPythonに尋ねます:印刷タイプ(例外)を持つtry&catch文 –
DNSで解決できないホスト名を使用する以外に、HTTP要求は有効なHTTP要求ではありませんHTTP/1.0が厳密にそれを必要としないにもかかわらず、今日はほとんどの場合、今日必要とされているHostヘッダを見逃してしまうからです。これを行う上位レベルのライブラリの代わりに実際にHTTPプロトコルを使用したい場合は、プロトコルを推測せずに、書面による標準を調べるか、または適切に実装されたクライアントによって行われた既存のHTTPトラフィックを確認してください。 –