C++中TCP通信通过Socket API实现,Windows使用Winsock,Linux使用POSIX接口。1. 服务器步骤:初始化、创建套接字、绑定地址、监听、接受连接、收发数据;客户端流程:初始化、创建套接字、连接服务器、发送接收数据。2. 示例代码包含条件编译支持跨平台,需链接ws2_32.lib(Windows)。3. 编译运行:Linux用g++ server.cpp -o server,Windows需链接库;先启服务器监听8080端口,再运行客户端连接。4. 注意事项:需检查send/recv返回值,实际应用应增加错误处理、多客户端支持(如多线程或select/poll),此例适用于学习基础通信流程。

在C++中实现TCP服务器和客户端通信,主要依赖于操作系统的套接字(Socket)API。在Windows上使用Winsock,在Linux/Unix上使用POSIX socket接口。下面分别给出一个简单的TCP服务器和客户端示例,适用于初学者理解基本流程。
1. TCP服务器端实现(C++)
服务器的主要步骤包括:初始化套接字、绑定地址、监听连接、接受客户端连接、收发数据。
Windows 示例(需链接 ws2_32.lib):
#include #ifdef _WIN32 #include #include #pragma comment(lib, "ws2_32.lib")#else #include #include #include #include #endifint main() {#ifdef _WIN32 WSADATA wsa; if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) { std::cerr << "WSA启动失败n"; return 1; }#endif // 创建套接字 int server_fd = socket(AF_INET, SOCK_STREAM, 0); if (server_fd == -1) { std::cerr << "套接字创建失败n"; return 1; } // 设置地址结构 struct sockaddr_in address; address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(8080); // 绑定 if (bind(server_fd, (struct sockaddr*)&address, sizeof(address)) == -1) { std::cerr << "绑定失败n"; return 1; } // 监听 if (listen(server_fd, 5) == -1) { std::cerr << "监听失败n"; return 1; } std::cout << "服务器正在监听 8080 端口...n"; // 接受连接 struct sockaddr_in client_addr; socklen_t client_len = sizeof(client_addr); int client_fd = accept(server_fd, (struct sockaddr*)&client_addr, &client_len); if (client_fd == -1) { std::cerr << "接受连接失败n"; return 1; } std::cout << "客户端已连接: " << inet_ntoa(client_addr.sin_addr) < 0) { std::cout << "收到: " << buffer << "n"; // 回传响应 send(client_fd, "Hello from server!", 18, 0); } // 关闭连接 close(client_fd); close(server_fd);#ifdef _WIN32 closesocket(server_fd); WSACleanup();#endif return 0;}
2. TCP客户端实现(C++)
客户端流程:初始化、创建套接字、连接服务器、发送/接收数据。
立即学习“C++免费学习笔记(深入)”;
#include #ifdef _WIN32 #include #include #pragma comment(lib, "ws2_32.lib")#else #include #include #include #include #endifint main() {#ifdef _WIN32 WSADATA wsa; if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) { std::cerr << "WSA启动失败n"; return 1; }#endif int sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == -1) { std::cerr << "套接字创建失败n"; return 1; } struct sockaddr_in server_addr; server_addr.sin_family = AF_INET; server_addr.sin_port = htons(8080); inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr); // 连接服务器 if (connect(sock, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) { std::cerr << "连接失败n"; return 1; } std::cout < 0) { std::cout << "服务器响应: " << buffer << "n"; } close(sock);#ifdef _WIN32 closesocket(sock); WSACleanup();#endif return 0;}
3. 编译与运行说明
Linux 编译:g++ server.cpp -o serverWindows 编译:使用 Visual Studio 或 g++(MinGW),确保链接 ws2_32.lib先运行服务器,再运行客户端服务器监听 127.0.0.1:8080,客户端连接该地址
4. 注意事项
错误处理很重要,实际项目中应更完善支持多客户端需使用多线程或IO复用(如select/poll)跨平台代码可用宏区分Win/Linuxsend/recv 返回值需检查,可能未一次性收发全部数据
基本上就这些。这个例子展示了最基本的TCP通信流程,适合学习网络编程基础。
以上就是c++++如何实现TCP服务器和客户端_c++网络通信TCP编程示例的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1482426.html
微信扫一扫
支付宝扫一扫