我只打开一次TCP连接(在python中)
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName,serverPort))
当我第一次发送像这样的GET请求时服务器正确响应
sentence = "GET "+ requestUrl +" HTTP/1.1\r\n"+ "Connection: Keep-Alive" +"\r\n\r\n"
clientSocket.send(sentence)
但是当我第二次使用相同的语法发送GET请求(没有关闭连接)时,我得到一个空白的响应。 我正在检索响应: -
getImage=""
while True:
data=clientSocket.recv(1024)
if(not data):
break
getImage+=data
有人可以帮忙吗?
答案 0 :(得分:1)
正如我所料,您的接收代码有一个错误。您正在阻止recv()调用,直到您什么也看不见。另一方面,服务器正在向您发送数据,而不是等待连接上的新请求一段时间。超时后,服务器关闭连接并且您的recv()代码返回时没有数据。您正在关闭连接时发送另一个GET请求,这当然什么都不做。
执行此操作的正确方法是读取服务器将在HTTP响应标头中发送的字节数,读取多个字节,然后发出新请求。