tcp 服务器的设计思路

  1. 创建套接字

    复制代码
    int sockfd = socket(AF_INET, SOCK_STREAM, 0);
    • AF_INET:IPv4 协议
    • SOCK_STREAM:TCP 流式套接字
    • 0:默认协议
  2. 绑定 IP 和端口

    复制代码
    struct sockaddr_in serv_addr;
    memset(&serv_addr, 0, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = INADDR_ANY; // 任意网卡
    serv_addr.sin_port = htons(8080);      // 端口号
    bind(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
  3. 监听连接

    复制代码
    listen(sockfd, 5); // 最大等待队列长度为5
  4. 接受连接

    复制代码
    struct sockaddr_in cli_addr;
    socklen_t len = sizeof(cli_addr);
    int connfd = accept(sockfd, (struct sockaddr*)&cli_addr, &len);
    • 返回一个新的套接字 connfd 用于与客户端通信
    • 原套接字 sockfd 继续用于接受其他连接
  5. 数据交互

    复制代码
    char buffer[1024];
    recv(connfd, buffer, sizeof(buffer), 0); // 接收数据
    send(connfd, buffer, strlen(buffer), 0); // 发送数据
  6. 关闭连接

    复制代码
    close(connfd);
相关推荐
风酥糖16 分钟前
chroot的Linux服务配置-当云服务器真正用起来
linux·运维·服务器
Deitymoon23 分钟前
linux——网络基础
linux·网络
CDN36024 分钟前
DDoS/CC 攻击下高防不顶用?防护模式与阈值调优教程
tcp/ip·ddos·高防ip
笨笨饿34 分钟前
# 52_浅谈为什么工程基本进入复数域?
linux·服务器·c语言·数据结构·人工智能·算法·学习方法
姜太小白37 分钟前
【Linux】麒麟V10SP3解决网络设备名不匹配问题
linux·运维·服务器
开开心心_Every38 分钟前
内存清理软件灵活设置,自动阈值快捷键清
运维·服务器·pdf·web3·电脑·excel·共识算法
CHENKONG_CK40 分钟前
晨控CK-UR08与西门子1200PLC配置ProfiNe通讯连接手册
服务器·制造
小红的布丁40 分钟前
公网 IP、私网 IP、路由表、转发表与 MAC 地址的关系
tcp/ip·macos·智能路由器
Smile_2542204181 小时前
DCS如何通过KepServerEx向InfluxDB写数据
网络·时序数据库
.select.1 小时前
TCP 5(socket编程)
服务器·网络·tcp/ip