全网整合营销服务商

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

免费咨询热线: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  # 线程  # 多线程  # 并发  # 服务端  # 客户端  # 绑定  # 保存为  # 是一个  # 你就  # 适用于  # 还需要  # 可通过 


相关文章: 网站代码制作软件有哪些,如何生成自己网站的代码?  如何设计高效校园网站?  定制建站模板如何实现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小时内与您取得联系。