首先实现TCP服务端与客户端通信,服务端绑定8080端口监听并接收客户端连接,客户端向127.0.0.1:8080发起连接,双方通过socket收发“Hello”消息,使用g++编译后依次运行server和client可完成一次基础通信。
想快速上手C++网络编程?从TCP客户端与服务端开始是最直接的方式。本文带你一步步实现一个基础但完整的C++ TCP通信程序,适用于Linux环境(如Ubuntu、CentOS),使用标准的socket API。
TCP是面向连接的协议,通信前必须建立连接。服务端监听端口,客户端主动发起连接。一旦连接成功,双方可通过套接字读写数据。
服务端流程:
客户端流程:
以下是一个简单的TCP服务端代码示例:
#include#include #include #include #include int main() { int server_fd, client_fd; struct sockaddr_in address; int addrlen = sizeof(address); char buffer[1024] = {0}; // 创建套接字 if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { perror("socket failed"); return -1; } // 配置地址结构 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)) < 0) { perror("bind failed"); close(server_fd); return -1; } // 开始监听 if (listen(server_fd, 3) < 0) { perror("listen"); close(server_fd); return -1; } std::cout << "Server listening on port 8080...\n"; // 接受连接 if ((client_fd = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) { perror("accept"); close(server_fd); return -1; } // 接收数据 int valread = read(client_fd, buffer, 1024); std::cout << "Received: " << buffer << std::endl; // 发送响应 const char *response = "Hello from server"; send(client_fd, response, strlen(response), 0); // 关闭连接 close(client_fd); close(server_fd); return 0; }
对应的服务端,客户端代码如下:
#include#include #include #include #include int main() { int sock = 0; struct sockaddr_in serv_addr; char buffer[1024] = {0}; const char *message = "Hello from client"; // 创建套接字 if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("Socket creation error"); return -1; } serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(8080); // 将IP地址转换为二进制格式 if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) { perror("Invalid address / Address not supported"); return -1; } // 连接服务端 if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { perror("Connection Failed"); return -1; } // 发送消息 send(sock, message, strlen(message), 0); std::cout << "Message sent\n"; // 接收响应 int valread = read(sock, buffer, 1024); std::cout << "Response: " << buffer << std::endl; // 关闭连接 close(sock); return 0; }
将服务端代码保存为 server.cpp,客户端保存为 client.cpp。
使用g++编译:
先运行服务端:./server
再打开另一个终端运行客户端:./client
如果一切正常,服务端会打印收到的消息,客户端会收到“Hello from server”。
基本上就这些。这个例子展示了最基础的TCP通信过程。实际开发中还需要处理错误重连、多客户端并发(可用多线程或select)、数据粘包等问题。但掌握这个模板,你就已经迈出了C++网络编程的第一步。
# linux
# centos
# 端口
# ubuntu
# ai
# c++
# ios
# stream
# 网络编程
# select
# 线程
# 多线程
# 并发
# 服务端
# 客户端
# 绑定
# 保存为
# 是一个
# 你就
# 适用于
# 还需要
# 可通过
相关文章:
网站代码制作软件有哪些,如何生成自己网站的代码?
如何设计高效校园网站?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
如何安全更换建站之星模板并保留数据?
建站主机与服务器功能差异如何区分?
贸易公司网站制作流程,出口贸易网站设计怎么做?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
如何高效配置香港服务器实现快速建站?
C#如何序列化对象为XML XmlSerializer用法
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
电商网站制作价格怎么算,网上拍卖流程以及规则?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
如何做网站制作流程,*游戏网站怎么搭建?
建站之星价格显示格式升级,你的预算足够吗?
建站VPS配置与SEO优化指南:关键词排名提升策略
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
如何通过虚拟主机空间快速建站?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
*服务器网站为何频现安全漏洞?
建站之星3.0如何解决常见操作问题?
高防服务器租用首荐平台,企业级优惠套餐快速部署
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
沈阳制作网站公司排名,沈阳装饰协会官方网站?
c# 在高并发场景下,委托和接口调用的性能对比
建设网站制作价格,怎样建立自己的公司网站?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
建站主机数据库如何配置才能提升网站性能?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
建站之星导航菜单设置与功能模块配置全攻略
制作网站的基本流程,设计网站的软件是什么?
定制建站是什么?如何实现个性化需求?
制作网页的网站有哪些,电脑上怎么做网页?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
如何通过商城自助建站源码实现零基础高效建站?
平台云上自助建站如何快速打造专业网站?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
建站为何优先选择香港服务器?
如何解决ASP生成WAP建站中文乱码问题?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
如何高效配置IIS服务器搭建网站?
建站之星微信建站一键生成小程序+多端营销系统
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
如何通过老薛主机一键快速建站?
学校建站服务器如何选型才能满足性能需求?
无锡营销型网站制作公司,无锡网选车牌流程?
如何通过智能用户系统一键生成高效建站方案?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
如何在阿里云购买域名并搭建网站?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
*请认真填写需求信息,我们会在24小时内与您取得联系。