没有收到第二个GET TCP请求的数据

时间:2015-10-05 14:28:23

标签: python sockets tcp

我只打开一次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

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

正如我所料,您的接收代码有一个错误。您正在阻止recv()调用,直到您什么也看不见。另一方面,服务器正在向您发送数据,而不是等待连接上的新请求一段时间。超时后,服务器关闭连接并且您的recv()代码返回时没有数据。您正在关闭连接时发送另一个GET请求,这当然什么都不做。

执行此操作的正确方法是读取服务器将在HTTP响应标头中发送的字节数,读取多个字节,然后发出新请求。