的recv()函数没有得到消息,早在蟒蛇

的recv()函数没有得到消息,早在蟒蛇

问题描述:

我使用python的recv()函数没有得到消息,早在蟒蛇

是新来的TCP/IP连接我有这个简单的代码:

import socket 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect(("www.google.com",80)) 
s.send("GET /\n") 
while 1: 
received = s.recv(1024) 
if received: 
    print received 

但是当我运行它,它只是始终运行并没有给我任何结果!

你能帮我吗。由于

按照HTTP Protocol

s.send("GET /\n") 

这是不正确的。您应该以正确的方式发送http数据。使用此

s.send("GET/HTTP/1.0\r\nHost: www.google.com\r\n\r\n"); 

其实你是送standard http request headers

GET/HTTP/1.0 
Host: www.google.com 

注:由于David说,在评论你必须能够解码分块传输编码。因此,您最好在报头中注明HTTP/1.0

+0

因为我真的不认为他想处理分块编码,声称1.1合规可能不是一个好主意。 –

+0

是的,我用“s.send(”GET/HTTP/1.1 \ r \ nHost:www.google.com \ r \ n \ r \ n“)替换了”s.send(“GET/\ n”)“ “一个,它现在的作品,谢谢 –

+0

@大卫我从来没有问题,该头。 –