首先实现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
# 线程
# 多线程
# 并发
# 服务端
# 客户端
# 绑定
# 保存为
# 是一个
# 你就
# 适用于
# 还需要
# 可通过
相关文章:
如何在IIS中新建站点并配置端口与物理路径?
建站之星安装后界面空白如何解决?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
阿里云网站制作公司,阿里云快速搭建网站好用吗?
如何在服务器上配置二级域名建站?
Android自定义控件实现温度旋转按钮效果
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
建站10G流量真的够用吗?如何应对访问高峰?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
如何通过商城自助建站源码实现零基础高效建站?
建站DNS解析失败?如何正确配置域名服务器?
高防服务器租用指南:配置选择与快速部署攻略
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
建站之星与建站宝盒如何选择最佳方案?
如何在景安云服务器上绑定域名并配置虚拟主机?
建站之星24小时客服电话如何获取?
制作网站的基本流程,设计网站的软件是什么?
如何快速搭建高效服务器建站系统?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
如何在云主机快速搭建网站站点?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
如何快速查询网址的建站时间与历史轨迹?
已有域名能否直接搭建网站?
已有域名如何免费搭建网站?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
济南网站建设制作公司,室内设计网站一般都有哪些功能?
如何通过NAT技术实现内网高效建站?
高端建站三要素:定制模板、企业官网与响应式设计优化
香港服务器部署网站为何提示未备案?
网站微信制作软件,如何制作微信链接?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
如何通过多用户协作模板快速搭建高效企业网站?
如何自定义建站之星模板颜色并下载新样式?
官网网站制作腾讯审核要多久,联想路由器newifi官网
如何通过VPS建站实现广告与增值服务盈利?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
招贴海报怎么做,什么是海报招贴?
如何生成腾讯云建站专用兑换码?
网站制作壁纸教程视频,电脑壁纸网站?
浅析上传头像示例及其注意事项
完全自定义免费建站平台:主题模板在线生成一站式服务
简历在线制作网站免费,免费下载个人简历的网站是哪些?
Swift开发中switch语句值绑定模式
如何高效配置IIS服务器搭建网站?
建站之星代理商如何保障技术支持与售后服务?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
网站制作免费,什么网站能看正片电影?
如何在阿里云虚拟服务器快速搭建网站?
网站制作软件有哪些,制图软件有哪些?
*请认真填写需求信息,我们会在24小时内与您取得联系。