当前位置:实例文章 » 其他实例» [文章]vs2022 cmake 的 socket 程序 demo 模拟最简单 web 处理(windows/linux 兼容)

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() 函数参考](

其他信息

其他资源

Top