«

C++ 编写一个最最简单的web 服务器(或许称不上)的代码,在浏览器中输出 hello world

时间:2021-6-8 21:24     作者:独元殇     分类: C/C++


代码呢很简单,主要是为了解一下 C++ 与浏览器的交互过程或网络等相关 ~知识~ 。

我设置的是 http://localhost:3455 这个端口为 3455 的本地地址。直接 g++ test.cpp 然后 ./a.out 就行了。虽然这么简单,还是简单说一些,我是在 mac 平台的环境。win 能不能行我依然不敢 100% 保证。

#include <iostream>
#include <string>
#include <cstring>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>

int main() {
    // 创建套接字
    int server_socket = socket(AF_INET, SOCK_STREAM, 0);

    // 绑定地址和端口号
    struct sockaddr_in server_address;
    memset(&server_address, 0, sizeof(server_address));
    server_address.sin_family = AF_INET;
    server_address.sin_addr.s_addr = htonl(INADDR_ANY);
    server_address.sin_port = htons(3455);
    bind(server_socket, (struct sockaddr*)&server_address, sizeof(server_address));

    // 监听端口
    listen(server_socket, 5);

    std::cout << "Server started..." << std::endl;

    while (true) {
        // 接受连接请求
        struct sockaddr_in client_address;
        socklen_t client_address_len = sizeof(client_address);
        int client_socket = accept(server_socket, (struct sockaddr*)&client_address, &client_address_len);

        // 发送响应
        std::string response = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<h1>Hello, World!</h1>";
        send(client_socket, response.c_str(), response.length(), 0);

        // 关闭连接
        close(client_socket); 
    }

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

    return 0;
}

代码是 chatgpt 告诉我的,不过触碰到我的知识盲区太多,我依然看不懂。即使已如此简单。

标签: 原创 C++

推荐阅读: