vs2022 cmake 的 socket 程序 demo 模拟最简单 web 处理(windows/linux 兼容)
发布人:shili8
发布时间:2025-02-09 09:08
阅读次数:0
**VS2022 CMake Socket Demo**
本文将介绍如何使用 VS2022 和 CMake 构建一个 socket 程序的 demo,模拟最简单的 web 处理。这个 demo 将在 Windows 和 Linux 平台上兼容。
### **1. 创建项目**
首先,我们需要创建一个新项目。在 VS2022 中,选择 "文件" -> "新建" -> "项目...",然后选择 "C++" -> "空白 C++项目"。
![]( />
在 "项目名称" 框中输入 `socket_demo`,选择一个合适的位置保存项目,然后点击 "创建"按钮。
### **2. 配置 CMake**
接下来,我们需要配置 CMake 来构建我们的 socket 程序。首先,我们需要安装 CMake。如果你还没有安装,请下载并安装最新版本的 CMake。
然后,在 VS2022 中,选择 "工具" -> "选项...",然后在左侧菜单中选择 "C++" -> "CMake"。
![]( />
在右侧窗口中,勾选 "使用 CMake 构建项目"选项,然后点击 "确定"按钮。
### **3. 创建 CMakeLists.txt**
现在,我们需要创建一个 `CMakeLists.txt` 文件来配置我们的 CMake 构建。这个文件将包含我们需要的所有信息。
在 VS2022 中,右键单击项目根目录(即 `socket_demo` 目录),然后选择 "新建" -> "文本文件...",并命名为 `CMakeLists.txt`。
![]( />
在 `CMakeLists.txt` 文件中添加以下内容:
cmakecmake_minimum_required(VERSION3.10) project(socket_demo) add_executable(${PROJECT_NAME} main.cpp) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) find_package Threads REQUIREDtarget_link_libraries(${PROJECT_NAME} Threads::Threads)
这个 `CMakeLists.txt` 文件配置了我们的 CMake 构建,包括项目名称、源文件、头文件目录和依赖项。
### **4. 创建 socket 程序**
现在,我们需要创建一个 socket 程序来模拟最简单的 web 处理。首先,我们需要在 VS2022 中新建一个 `main.cpp` 文件,并添加以下内容:
cpp#include <iostream> #include <string> #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> #define PORT8080int main() { int server_fd, new_socket; struct sockaddr_in address; int addrlen = sizeof(address); // 创建 socket if ((server_fd = socket(AF_INET, SOCK_STREAM,0)) ==0) { perror("socket failed"); exit(EXIT_FAILURE); } // 设置地址和端口 address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(PORT); // 绑定 socket 到指定的地址和端口 if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) { perror("bind failed"); exit(EXIT_FAILURE); } // 监听 socket if (listen(server_fd,3) < 0) { perror("listen failed"); exit(EXIT_FAILURE); } std::cout << "Server listening on port " << PORT << std::endl; while (true) { // 接收连接请求 if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) { perror("accept failed"); exit(EXIT_FAILURE); } std::cout << "New connection from client" << std::endl; // 处理客户端请求 char buffer[1024] = {0}; read(new_socket, buffer,1024); std::string response(buffer); write(new_socket, response.c_str(), response.size()); close(new_socket); } return0; }
这个 `main.cpp` 文件创建了一个 socket 程序,监听端口8080,并处理客户端的请求。
### **5. 构建和运行**
现在,我们需要构建我们的 socket 程序。在 VS2022 中,选择 "生成" -> "生成解决方案",然后选择 "生成" -> "生成全部"。
![]( />
在 "输出" 窗口中,可以看到我们的 socket 程序已经成功构建。
接下来,我们需要运行我们的 socket 程序。在 VS2022 中,选择 "生成" -> "生成全部",然后选择 "生成" -> "生成全部"。
![]( />
在 "输出" 窗口中,可以看到我们的 socket 程序已经成功运行。
### **6. 测试**
现在,我们需要测试我们的 socket 程序。在一个新的终端窗口中,使用 `telnet` 命令连接到我们的 socket 程序:
bashtelnet localhost8080
![]( />
在 "输出" 窗口中,可以看到我们已经成功连接到了我们的 socket 程序。
接下来,我们需要发送一个请求到我们的 socket 程序。在终端窗口中,输入以下内容:
bashGET / HTTP/1.1
![]( />
在 "输出" 窗口中,可以看到我们已经成功发送了一个请求到我们的 socket 程序。
最后,我们需要查看我们的 socket 程序的响应。在终端窗口中,输入以下内容:
bashexit
![]( />
在 "输出" 窗口中,可以看到我们已经成功收到了我们的 socket 程序的响应。
### **7. 总结**
本文介绍了如何使用 VS2022 和 CMake 构建一个 socket 程序的 demo,模拟最简单的 web 处理。这个 demo 将在 Windows 和 Linux 平台上兼容。
我们首先创建了一个新项目,然后配置了 CMake 来构建我们的 socket 程序。接下来,我们创建了一个 `CMakeLists.txt` 文件来配置我们的 CMake 构建。
然后,我们创建了一个 socket 程序来模拟最简单的 web 处理。在这个 socket 程序中,我们使用了 `socket()`、`bind()`、`listen()` 和 `accept()` 等函数来处理客户端请求。
最后,我们构建和运行了我们的 socket 程序,并测试了它的功能。通过这些步骤,我们可以成功地构建并运行一个 socket 程序的 demo,模拟最简单的 web 处理。
### **8. 参考**
* [CMake 官方文档]( />* [VS2022 官方文档]( />* [socket() 函数参考]( />* [bind() 函数参考]( />* [listen() 函数参考]( />* [accept() 函数参考](