Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python socket.connect()给出socket.gaier:[Errno 11004]getaddrinfo失败_Python - Fatal编程技术网

Python socket.connect()给出socket.gaier:[Errno 11004]getaddrinfo失败

Python socket.connect()给出socket.gaier:[Errno 11004]getaddrinfo失败,python,Python,我已经检查了关于我的问题的答案,但我找不到问题所在。我是Python新手,这可能是个问题。我编写了此简单代码以连接到站点,但我遇到以下错误: socket.gaierro:[Errno 11004]getaddrinfo失败 这是我的代码: import socket mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) mysock.connect(('http://www.py4e.com', 80)) mysock.send(

我已经检查了关于我的问题的答案,但我找不到问题所在。我是Python新手,这可能是个问题。我编写了此简单代码以连接到站点,但我遇到以下错误:

socket.gaierro:[Errno 11004]getaddrinfo失败

这是我的代码:

import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('http://www.py4e.com', 80))
mysock.send('GET http://www.py4e.com/code3/mbox-short.txt HTTP/1.0\n\n')
while True:
    data = mysock.recv(512)        
    if(len(data) < 1):
        break
    print (data)
mysock.close()
导入套接字
mysock=socket.socket(socket.AF\u INET,socket.SOCK\u流)
mysock.connect(('http://www.py4e.com', 80))
mysock.send('GEThttp://www.py4e.com/code3/mbox-short.txt HTTP/1.0\n\n')
尽管如此:
data=mysock.recv(512)
如果(len(数据)<1):
打破
打印(数据)
mysock.close()
两者基本上做相同的事情

最后,在
GET
请求中,您也不会请求
http://

相反,您只需发送要检索的文件的路径:

mysock.send(b'GET /code3/mbox-short.txt HTTP/1.0\n\n')
原因是(再次)http://是一个协议描述符,而不是发送的实际协议数据的一部分。您也不需要在
GET
请求中使用host声明,因为您连接到的服务器已经知道您所在的主机,因为您。。。已连接到它。
相反,如果主机为多个虚拟主机提供服务,服务器希望您提供
主机:\r\n
头。
您可能需要一些其他标题才能从某些web服务器请求实际内容。

但这是最基本的问题

继续阅读 这是一个好的开始:

它显示原始
GET
请求的外观。

将来,我建议您使用内置浏览器,它可以显示原始标题、原始响应和一大堆其他内容。

可能的主机名副本不包括该方案(
xxx://
)。@MichaelFoukarakis副本用于绑定套接字,该套接字在主机名查找期间的工作原理完全不同。但是值得注意的是,有几十个重复的问题也有相同的错误,例如。即使确切的MVCE不一样,查看其中任何一个的错误代码或描述都可以解决此问题。感谢各位宝贵的建议!非常感谢你的帮助!我会检查您发送的链接。@A.Drosi不客气,欢迎访问SO!如果你觉得我的答案或任何其他答案解决了你的问题,请随意将任何你认为合适的答案标记为可接受的答案。祝你好运。
mysock.send(b'GET http://www.py4e.com/code3/mbox-short.txt HTTP/1.0\n\n')
mysock.send(bytes('GET http://www.py4e.com/code3/mbox-short.txt HTTP/1.0\n\n', 'UTF-8'))
mysock.send(b'GET /code3/mbox-short.txt HTTP/1.0\n\n')