C语言Socket实现Http的post请求

修改三个宏定义即可

#define HOST “192.168.1.133” //主机
#define PORT 80 //端口
#define POST_DATA “post_test=444&post_val=555” //内容

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

#define HOST "192.168.1.133"
#define PORT 80
#define POST_DATA "post_test=444&post_val=555"
#define POST_DATA_LENGTH strlen(POST_DATA)

int main() {
    int sockfd;
    struct sockaddr_in server_addr;
    struct hostent *server;

    // 创建套接字
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0) {
        perror("Error opening socket");
        exit(1);
    }

    // 获取服务器的IP地址
    server = gethostbyname(HOST);
    if (server == NULL) {
        fprintf(stderr,"Error: no such host\n");
        exit(1);
    }

    // 设置服务器地址结构
    bzero((char *) &server_addr, sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    bcopy((char *)server->h_addr, (char *)&server_addr.sin_addr.s_addr, server->h_length);
    server_addr.sin_port = htons(PORT);

    // 连接到服务器
    if (connect(sockfd, (struct sockaddr *) &server_addr, sizeof(server_addr)) < 0) {
        perror("Error connecting");
        exit(1);
    }

    // 构造HTTP请求
    char request[1024];
    sprintf(request, "POST /set HTTP/1.1\r\n"
                      "Host: %s\r\n"
                      "Content-Type: application/x-www-form-urlencoded\r\n"
                      "Content-Length: %zu\r\n"
                      "\r\n"
                      "%s", HOST, POST_DATA_LENGTH, POST_DATA);

    // 发送HTTP请求
    if (send(sockfd, request, strlen(request), 0) < 0) {
        perror("Error sending request");
        exit(1);
    }

    // 接收并显示服务器的响应
    char response[4096];
    int bytes_received = recv(sockfd, response, sizeof(response), 0);
    if (bytes_received < 0) {
        perror("Error receiving response");
        exit(1);
    }
    printf("Response from server:\n");
    fwrite(response, 1, bytes_received, stdout);

    // 关闭套接字
    close(sockfd);

    return 0;
}

相关推荐

  1. C语言Socket实现Httppost请求

    2024-06-11 17:22:03       31 阅读
  2. curl c++ 实现HTTP GET和POST请求

    2024-06-11 17:22:03       49 阅读
  3. HTTP——POST请求详情

    2024-06-11 17:22:03       25 阅读
  4. 【LinuxC语言】手撕Http之处理POST请求

    2024-06-11 17:22:03       26 阅读
  5. c# Http Get Post Put Delete 请求帮助类

    2024-06-11 17:22:03       46 阅读
  6. go语言http post推送

    2024-06-11 17:22:03       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-11 17:22:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-11 17:22:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-11 17:22:03       82 阅读
  4. Python语言-面向对象

    2024-06-11 17:22:03       91 阅读

热门阅读

  1. TCP三次握手过程

    2024-06-11 17:22:03       27 阅读
  2. 【设计模式】面向对象与UML

    2024-06-11 17:22:03       32 阅读
  3. 有关团队“知识管理”和“经验留存”的思考

    2024-06-11 17:22:03       29 阅读
  4. 大模型推理时model.generate的源码

    2024-06-11 17:22:03       27 阅读
  5. 关于零拷贝的认知

    2024-06-11 17:22:03       31 阅读
  6. 租用服务器提供服务

    2024-06-11 17:22:03       32 阅读