HTTP/1.0请求在读取()时被阻止(C程序)

HTTP/1.0请求在读取()时被阻止(C程序),http,get,httprequest,Http,Get,Httprequest,我正在构建一个简单的程序,该程序连接到google服务器,并使用HTTP/1.0发送GET请求。 这是我要发送的线路: char get[] = "GET /?gfe_rd=cr&dcr=0&ei=0PfNWpaWJ8vA8gfnuK-wDw HTTP/1.0\r\n"; write(s,get,strlen(get)); 然后我迭代读取,而它有更多的字节要读取 char buffer[10000]; int pos=0; while((t = read

我正在构建一个简单的程序,该程序连接到google服务器,并使用HTTP/1.0发送GET请求。 这是我要发送的线路:

char get[] = "GET /?gfe_rd=cr&dcr=0&ei=0PfNWpaWJ8vA8gfnuK-wDw HTTP/1.0\r\n";
write(s,get,strlen(get));
然后我迭代读取,而它有更多的字节要读取

    char buffer[10000];
    int pos=0;
    while((t = read(s,buffer+pos,1))!=0){
            pos++;
    }
    printf("END");
永远不会到达printf。 相反,如果我发送这一行,程序就会正常工作 (这是一个简单的请求,而之前的请求是完整的请求)

为什么程序会阻塞读取?我的意思是,如果是请求问题,它应该返回400错误。
提前感谢

完整请求以双CRLF结尾。您只发送一个请求,因此服务器正在等待请求的其余部分。

完整请求以双CRLF结束。您只发送一个请求,因此服务器正在等待请求的其余部分。

问题已解决。完整请求的组成如RFC1945中所述:

完整请求=请求行
*(一般标题
|请求头
|实体标题)
CRLF [实体机构]

还有一条请求线

请求行=方法SP请求URI SP HTTP版本CRLF

因此,在我的例子中,GET必须以双CLRF结尾。
多亏了@CodeCaster,问题才得以解决。完整请求的组成如RFC1945中所述:

完整请求=请求行
*(一般标题
|请求头
|实体标题)
CRLF [实体机构]

还有一条请求线

请求行=方法SP请求URI SP HTTP版本CRLF

因此,在我的例子中,GET必须以双CLRF结尾。 感谢@CodeCaster

char get[] = "GET /?gfe_rd=cr&dcr=0&ei=0PfNWpaWJ8vA8gfnuK-wDw\r\n";
write(s,get,strlen(get));