正如您所知道的,有時我們無法知道數據的大小(如果http響應頭中沒有Content-Length
)。如何接收http響應數據使用套接字?
接收http響應數據(使用套接字)的最佳方式是什麼?
以下代碼可以獲取所有數據,但會阻止在buf = sock.recv(1024)
。
from socket import *
import sys
sock = socket(AF_INET, SOCK_STREAM)
sock.connect(('www.google.com', 80))
index = "GET/HTTP/1.1\r\nHOST:www.google.com\r\nConnection:keep-alive\r\n\r\n"
bdsock.send(index)
data = ""
while True:
buf = bdsock.recv(1024)
if not len(buf):
break
data += buf
如果您還在編寫發件人代碼,請使用標題系統。否則,你可以循環recv()直到它返回一個空字符串(可能是None,但是誰在乎他們都是Falsey)。 – ThinkChaos