HTTP/1.0请求在读取()时被阻止(C程序)
我正在构建一个简单的程序,该程序连接到google服务器,并使用HTTP/1.0发送GET请求。 这是我要发送的线路: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
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));