簡體   English   中英

為什么我會收到 socket.gaierror?

[英]Why am I getting socket.gaierror?

我正在嘗試訪問和顯示來自http://data.pr4e.org/romeo.txt的數據。 這是我的代碼:

import socket         
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
mysock.connect(('data.pr4e', 80))  
cmd = 'GET http://data.pr4e.org/romeo.txt HTTP/1.0\n\n'.encode()
mysock.send(cmd)    

while True:
    data = mysock.recv(512)
    if (len(data) < 1):
        break       
    print(data.decode()) 
mysock.close()

我收到此錯誤消息:

socket.gaierror: [Errno 11001] getaddrinfo failed. 

我在另一個問題上看到這意味着我沒有有效的主機名,但我不確定為什么主機名無效。

該錯誤是因為您將錯誤的主機名傳遞給connect() 您需要將'data.pr4e'更改為'data.pr4e.org'

此外,您的請求數據也格式不正確。 您需要從請求中刪除方案和主機名,並使用\r\n而不是\n

嘗試這個:

import socket         
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
mysock.connect(('data.pr4e.org', 80))  
cmd = 'GET /romeo.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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM