0
저는 파이썬을 사용하여 HTTP 프로토콜을 통해 소켓에 연결하고 URL을 검색하는 방법을 배우고 있습니다. 누군가 내가 잘못했을지도 모른다는 것을 지적 할 수 있습니까?소켓에 연결하는 중 오류가 발생했습니다.
파이썬 코드 :
# 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()
나는 윈도우 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
실제 오류를 알 수 있으면 어떤 유형의 예외인지 파이썬에게 묻습니다. 인쇄 유형 (예외)을 사용하는 try & catch 문 –
DNS에서 해결할 수없는 호스트 이름을 사용하는 것 외에도 HTTP 요청은 유효한 HTTP 요청이 아닙니다 HTTP/1.0이 엄격하게 요구하지는 않지만 대부분의 경우 오늘날 필요로하는 Host 헤더를 잃어 버리기 때문입니다. 이 작업을 수행하는 상위 레벨 라이브러리 대신 HTTP 프로토콜을 직접 사용하려면 프로토콜을 추측하지 말고 표준을 연구하거나 제대로 구현 된 클라이언트가 수행 한 기존 HTTP 트래픽을 조사하십시오. –