2012-09-06 65 views
1

我使用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 

但是當我運行它,它只是始終運行並沒有給我任何結果!

你能幫我嗎。由於

回答

1

按照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

@大衛我從來沒有問題,該頭。 –