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 告诉我的,不过触碰到我的知识盲区太多,我依然看不懂。即使已如此简单。
推荐阅读: