答案:C++中TCP通信需创建socket、绑定地址、监听连接、接收数据并响应;服务端初始化后绑定端口8080,监听并接受客户端连接,收发消息后关闭连接。
在C++中实现Socket通信,通常使用TCP协议进行客户端与服务端之间的数据传输。Windows平台使用Winsock库,Linux/Unix平台使用POSIX的socket API。下面分别给出一个简单的TCP服务端和客户端示例,适用于跨平台理解(代码以Linux为主,Windows需做少
量调整)。
服务端的主要流程是:初始化socket → 绑定地址 → 监听连接 → 接受客户端 → 收发数据 → 关闭连接。
// server.cpp
#include iostream>
#include
#include
#include
#include
using namespace std;
int main() {
int server_fd, client_fd;
struct sockaddr_in addr;
int addrlen = sizeof(addr);
// 创建socket
server_fd = socket(AF_INET, SOCK_STREAM, 0);
if (server_fd == -1) {
perror("socket failed");
return -1;
}
// 设置地址结构
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_port = htons(8080);
// 绑定
if (bind(server_fd, (struct sockaddr*)&addr, sizeof(addr)) == -1) {
perror("bind failed");
return -1;
}
// 监听
if (listen(server_fd, 5) == -1) {
perror("listen failed");
return -1;
}
cout
// 接受连接
client_fd = accept(server_fd, (struct sockaddr*)&addr, (socklen_t*)&addrlen);
if (client_fd == -1) {
perror("accept failed");
return -1;
}
cout
// 接收数据
char buffer[1024] = {0};
read(client_fd, buffer, 1024);
cout
// 发送响应
const char* response = "Hello from server!";
send(client_fd, response, strlen(response), 0);
// 关闭连接
close(client_fd);
close(server_fd);
return 0;
}
客户端流程:创建socket → 连接服务端 → 发送数据 → 接收响应 → 关闭。
// client.cpp
#include
#include
#include
#include
#include
#include
using namespace std;
int main() {
int sock = 0;
struct sockaddr_in serv_addr;
// 创建socket
if ((sock = socket(AF_INET, SOCK_STREAM, 0))
cout
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)
cout
return -1;
}
// 连接服务器
if (connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr))
cout
return -1;
}
// 发送数据
const char* message = "Hello from client";
send(sock, message, strlen(message), 0);
cout
// 接收响应
char buffer[1024] = {0};
read(sock, buffer, 1024);
cout
// 关闭连接
close(sock);
return 0;
}
使用g++编译:
终端1运行服务端:
./server
终端2运行客户端:
./client
Windows下需包含winsock2.h>并链接ws2_32库,且必须先初始化Winsock:
关闭socket用closesocket()而非close()。
基本上就这些,不复杂但容易忽略细节。
# linux
# windows
# 端口
# ai
# unix
# c++
# ios
# win
# stream
# 网络编程
# strlen
# if
# include
# Error
# const
# perror
# char
# int
# using
# Struct
# Namespace
# 服务端
# 客户端
# 绑定
# 适用于
# 而非
# 必须先
# netinet
# cstring
# sys
# std
相关文章:
香港网站服务器数量如何影响SEO优化效果?
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
建站之星多图banner生成与模板自定义指南
平台云上自助建站如何快速打造专业网站?
建站之星后台密码如何安全设置与找回?
建站主机选购指南:核心配置与性价比推荐解析
如何获取免费开源的自助建站系统源码?
定制建站是什么?如何实现个性化需求?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
如何获取开源自助建站系统免费下载链接?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
建站之星好吗?新手能否轻松上手建站?
如何生成腾讯云建站专用兑换码?
python的本地网站制作,如何创建本地站点?
安云自助建站系统如何快速提升SEO排名?
C++中引用和指针有什么区别?(代码说明)
建站VPS配置与SEO优化指南:关键词排名提升策略
子杰智能建站系统|零代码开发与AI生成SEO优化指南
如何快速搭建二级域名独立网站?
如何在宝塔面板中创建新站点?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
建站之星CMS五站合一模板配置与SEO优化指南
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
C++如何使用std::optional?(处理可选值)
教学网站制作软件,学习*后期制作的网站有哪些?
深圳网站制作培训,深圳哪些招聘网站比较好?
,网页ppt怎么弄成自己的ppt?
建站之星展会模板:智能建站与自助搭建高效解决方案
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
黑客如何利用漏洞与弱口令入侵网站服务器?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
建站之星安装路径如何正确选择及配置?
潮流网站制作头像软件下载,适合母子的网名有哪些?
家庭服务器如何搭建个人网站?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
清除minerd进程的简单方法
c++怎么用jemalloc c++替换默认内存分配器【性能】
,购物网站怎么盈利呢?
建站主机CVM配置优化、SEO策略与性能提升指南
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
如何通过山东自助建站平台快速注册域名?
常州企业网站制作公司,全国继续教育网怎么登录?
建站之星ASP如何实现CMS高效搭建与安全管理?
常州企业建站如何选择最佳模板?
建站主机选购指南:核心配置优化与品牌推荐方案
香港服务器网站推广:SEO优化与外贸独立站搭建策略
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
如何在万网主机上快速搭建网站?
Android自定义listview布局实现上拉加载下拉刷新功能
专业商城网站制作公司有哪些,pi商城官网是哪个?
*请认真填写需求信息,我们会在24小时内与您取得联系。