Linux C 实现 HTTP 服务器返回 JSON 数据:简单示例代码
下面是一个简单的示例代码,使用 C 语言在 Linux 上实现一个 HTTP 服务器,返回 JSON 数据。\n\nc\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <sys/socket.h>\n#include <netinet/in.h>\n\n#define PORT 8080\n#define BUFFER_SIZE 1024\n\nint main() {\n int server_fd, client_fd;\n struct sockaddr_in server_addr, client_addr;\n char buffer[BUFFER_SIZE];\n char response[BUFFER_SIZE];\n\n // 创建套接字\n server_fd = socket(AF_INET, SOCK_STREAM, 0);\n if (server_fd < 0) {\n perror('socket');\n exit(EXIT_FAILURE);\n }\n\n // 初始化服务器地址结构\n memset(&server_addr, 0, sizeof(server_addr));\n server_addr.sin_family = AF_INET;\n server_addr.sin_port = htons(PORT);\n server_addr.sin_addr.s_addr = INADDR_ANY;\n\n // 绑定套接字和地址\n if (bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {\n perror('bind');\n exit(EXIT_FAILURE);\n }\n\n // 监听连接\n if (listen(server_fd, 1) < 0) {\n perror('listen');\n exit(EXIT_FAILURE);\n }\n\n printf('Server started at port %d\n', PORT);\n\n while (1) {\n socklen_t client_len = sizeof(client_addr);\n\n // 接受客户端连接\n client_fd = accept(server_fd, (struct sockaddr *)&client_addr, &client_len);\n if (client_fd < 0) {\n perror('accept');\n exit(EXIT_FAILURE);\n }\n\n // 接收客户端请求\n memset(buffer, 0, sizeof(buffer));\n ssize_t num_bytes = read(client_fd, buffer, sizeof(buffer));\n if (num_bytes < 0) {\n perror('read');\n exit(EXIT_FAILURE);\n }\n\n // 构造HTTP响应\n sprintf(response, 'HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{'message': 'Hello, world!'}');\n\n // 发送HTTP响应给客户端\n if (write(client_fd, response, strlen(response)) < 0) {\n perror('write');\n exit(EXIT_FAILURE);\n }\n\n // 关闭客户端连接\n close(client_fd);\n }\n\n // 关闭服务器套接字\n close(server_fd);\n\n return 0;\n}\n\n\n这个示例代码创建了一个基本的HTTP服务器,监听在8080端口。当有客户端连接时,服务器会返回一个包含JSON数据的HTTP响应。你可以根据需要修改JSON数据的内容。\n\n注意:这只是一个简单的示例,没有处理并发连接和错误处理。在实际应用中,你需要根据具体需求进行适当的修改和扩展。
原文地址: https://www.cveoy.top/t/topic/qhkX 著作权归作者所有。请勿转载和采集!