使用 C 语言实现一个 HTTP GET 连接

2019-05-08关键字:HTTP 连接、C语言访问网络如果您比较有耐心,建议从头至尾读完这篇文章。如果您只想快速应用 C 语言的 HTTP GET 连接功能,可以直接跳到文末拷贝源代码去使用。1、HTTP 连接的流程HTTP 连接都是建立在 TCP 连接之上的。这里我们不讨论 TCP 的三次握手四次挥手过程。我们只单纯地来分析下一个 HTTP 连...
摘要由CSDN通过智能技术生成

2019-05-08

关键字:HTTP 连接、C语言访问网络


 

如果您比较有耐心,建议从头至尾读完这篇文章。如果您只想快速应用 C 语言的 HTTP GET 连接功能,可以直接跳到文末拷贝源代码去使用

 

1、HTTP 连接的流程

 

HTTP 连接都是建立在 TCP 连接之上的。这里我们不讨论 TCP 的三次握手四次挥手过程。我们只单纯地来分析下一个 HTTP 连接的过程应该是怎样的。

 

首先,我们需要创建一个 TCP 的 Socket 。后面我们的网络连接操作都是基于这个 Socket 来构建的。

 

其次,我们需要来组装一下 HTTP 请求。就是封装一个 GET 请求,表明一下我们想要连接哪个服务器的哪些资源。当然,其实第 1 步和第 2 步的顺序并不重要。

 

第三步,我们需要发送 HTTP GET 请求了,将前面封装好的请求信息通过前面创建好的 TCP 通道发送出去。

 

第四步,读取服务端的返回结果。

 

2、代码实操

 

1、创建 Socket
    int sockfd;
     
     //创建套接字
    if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) {
        printf("socket failed!!!\n");
        exit(0);
    }

没什么好说的,照着做就好了。

 

2、封装 HTTP 请求
    char request[512] = {
   0};
    memset(request, 0, 512);
    strcat(request, "GET ");
    strcat(request, "/index.html");
    strcat(request, " HTTP/1.1\n");
    strcat(request, "Host: ");
    strcat(request, "192.168.221.30");
    strcat(request, "\nContent-Type: text/html\n");
    strcat(request, "Content-Length: 0\n");
    strcat(request, "\r\n");

上面加粗标灰底的部分分别是要访问的资源路径以及服务器地址。其中服务器地址并不是很重要,但是上面的资源路径一定不能错!

 

3、发起 HTTP 请求
    struct sockaddr_in servaddr;
    int writeRet;
    
    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(80);
    
    if (inet_pton(AF_INET, "192.168.221.30", &servaddr.sin_addr) <= 0 ){
        printf("inet_pton error!\n
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值