繁体   English   中英

在C中构建简单的http客户端

[英]building simple http client in c

sprintf(send_data,"GET / HTTP/1.1\r\nHost: %s\r\n\r\n",hoststr);
printf("%s",send_data);
send(sock,send_data,strlen(send_data), 0);
while(bytes_recieved)
  {
    bytes_recieved=recv(sock,recv_data,1024,0);
    printf("%d\n",bytes_recieved);
    if(bytes_recieved==0){ break; }
    recv_data[bytes_recieved] = '\0';
    printf("%s" , recv_data);
  }

例如,当我请求“ www.example.com”时,我得到了整个页面,然后在两到三秒钟后结束时,我打印了bytes_received('0'),然后循环中断了。

为什么需要2-3秒才能打破循环?

有没有更好的方法来实现简单的http客户端呢?

谢谢。

作为HTTP协议的优化,版本1.1添加了默认的持久连接(aka Connection: Keep-Alive )。 保持活动状态使连接保持打开状态,以便您可以通过“可靠”通道发送其他请求; 您可以在RFC2616第8.1节-持久连接中找到有关HTTP协议那部分的其他信息。

recv返回0 ,表示连接的另一端已很好地关闭了连接。

HTTP从一开始就是纯粹的请求-响应协议,其中每个请求都得到响应,然后是封闭的连接。

您在这里看到的是,首先收到请求的页面,然后在超时(由于HTTP协议的较新版本(您说支持)使连接保持打开状态)之后,服务器关闭了连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM