cc

作者 by 超米 / 2024-11-09 / 暂无评论 / 46 个足迹

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>

#define MAX_BUFFER_SIZE 1024

// 将数据保存到文件
void save_to_file(const char *data) {
    FILE *fp = fopen("received_post_data.txt", "w");
    if (fp == NULL) {
        perror("Error opening file");
        return;
    }
    fputs(data, fp);
    fclose(fp);
}

int main() {
    int server_socket, client_socket;
    struct sockaddr_in server_addr, client_addr;
    socklen_t client_addr_len = sizeof(client_addr);
    char buffer[MAX_BUFFER_SIZE];
    int bytes_received;

    // 创建套接字
    server_socket = socket(AF_INET, SOCK_STREAM, 0);
    if (server_socket == -1) {
        perror("Error creating socket");
        return 1;
    }

    // 配置服务器地址
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(8080);
    server_addr.sin_addr.s_addr = INADDR_ANY;

    // 绑定套接字到地址
    if (bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {
        perror("Error binding");
        close(server_socket);
        return 1;
    }

    // 监听端口
    if (listen(server_socket, 5) == -1) {
        perror("Error listening");
        close(server_socket);
        return 1;
    }

    // 接受客户端连接
    client_socket = accept(server_socket, (struct sockaddr *)&client_addr, &client_addr_len);
    if (client_socket == -1) {
        perror("Error accepting connection");
        close(server_socket);
        return 1;
    }

    // 接收数据
    bytes_received = recv(client_socket, buffer, MAX_BUFFER_SIZE - 1, 0);
    if (bytes_received == -1) {
        perror("Error receiving data");
        close(client_socket);
        close(server_socket);
        return 1;
    }
    buffer[bytes_received] = '\0';

    // 保存数据到文件
    save_to_file(buffer);

    // 关闭套接字
    close(client_socket);
    close(server_socket);

    return 0;
}

独特见解