超详细:用 C++ 编写 TCP 服务端示例代码
好的,以下是一个简单的 C++ TCP 服务端示例代码: ```cpp #include <iostream> #include <cstring> #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> using namespace std; int main() { int server_fd, new_socket; struct sockaddr_in address; int opt = 1; int addrlen = sizeof(address); char buffer[1024] = {0}; char *hello = "Hello from server"; // 创建 socket 文件描述符 if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { perror("socket failed"); exit(EXIT_FAILURE); } // 设置 socket 选项 if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) { perror("setsockopt"); exit(EXIT_FAILURE); } address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(8080); // 绑定 socket 到指定地址和端口号 if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) { perror("bind failed"); exit(EXIT_FAILURE); } // 监听指定连接数(这里是 10)的请求队列 if (listen(server_fd, 10) < 0) { perror("listen"); exit(EXIT_FAILURE); } cout << "Server is listening on port 8080...\n"; // 接受客户端请求并建立连接 if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) { perror("accept"); exit(EXIT_FAILURE); } // 向客户端发送数据 send(new_socket, hello, strlen(hello), 0); cout << "Hello message sent\n"; // 接收客户端数据并回复 memset(buffer, 0, sizeof(buffer)); int valread = read(new_socket, buffer, sizeof(buffer)); cout << "Received message from client: " << buffer << endl; send(new_socket, buffer, strlen(buffer), 0); cout << "Message sent back to client: " << buffer << endl; // 关闭连接和释放资源 close(new_socket); close(server_fd); return 0; } ``` ######[AI写代码神器 | 653点数解答 | 2024-02-23 09:58:46]
- Java实现链表反转:迭代与递归双解法详解及开发实战指南(DeepSeek | 1409点数解答 | 2026-03-15 15:09:29)49
- 缜密逻辑,全新无名杀“风餐”技能代码精心打造与深度解析 (字节豆包 | 469点数解答 | 2025-04-05 11:37:06)258
- Java 状态模式:模拟 TCP 连接多种状态及行为转换(GPT | 2147点数解答 | 2024-12-19 22:19:37)304
- Java实现状态模式:模拟TCP连接状态管理及行为处理(GPT | 1541点数解答 | 2024-12-19 22:19:57)289
- 探寻数组中最长摆动子序列长度:思路剖析与代码优化(GPT | 758点数解答 | 2024-12-23 23:18:29)284
- 独家剖析:求解数组最长摆动子序列长度的代码实现与改进建议(GPT | 350点数解答 | 2024-12-23 23:20:54)281
- JS 代码:轻松定义变量 test 并赋值为“red”( | 6点数解答 | 2024-05-19 20:46:45)391
- JS 代码:轻松定义含“Saab、Volvo、BMW”的数组变量 mycars( | 14点数解答 | 2024-05-19 20:47:47)425
- JS 代码:判断“red”改值为“green”并弹窗显示结果( | 176点数解答 | 2024-05-20 21:33:04)427
- 用 JS 代码巧妙判断 a 与 b 关系:输出对应结果 ( | 47点数解答 | 2024-05-20 22:10:14)335
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)488
- JS 巧用 for in 循环逐行输出对象 key:value,还有关键判断!( | 208点数解答 | 2024-05-20 22:15:55)373