全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C++ socket编程入门_C++ TCP客户端与服务端实现

首先实现TCP服务端与客户端通信,服务端绑定8080端口监听并接收客户端连接,客户端向127.0.0.1:8080发起连接,双方通过socket收发“Hello”消息,使用g++编译后依次运行server和client可完成一次基础通信。

想快速上手C++网络编程?从TCP客户端与服务端开始是最直接的方式。本文带你一步步实现一个基础但完整的C++ TCP通信程序,适用于Linux环境(如Ubuntu、CentOS),使用标准的socket API。

1. 理解TCP通信基本流程

TCP是面向连接的协议,通信前必须建立连接。服务端监听端口,客户端主动发起连接。一旦连接成功,双方可通过套接字读写数据。

服务端流程:

  • 创建套接字(socket)
  • 绑定地址和端口(bind)
  • 开启监听(listen)
  • 接受客户端连接(accept)
  • 收发数据(recv/send)
  • 关闭连接(close)

客户端流程:

  • 创建套接字
  • 连接服务端(connect)
  • 收发数据
  • 关闭连接

2. C++实现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;
}

3. C++实现TCP客户端

对应的服务端,客户端代码如下:

#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;
}

4. 编译与运行方法

将服务端代码保存为 server.cpp,客户端保存为 client.cpp

使用g++编译:

  • g++ server.cpp -o server
  • g++ client.cpp -o client

先运行服务端:./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小时内与您取得联系。