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);
相关推荐
0+1115 小时前
Linux --从 poll 到 epoll多路转接
linux·服务器·1024程序员节
青瓦梦滋5 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
桌面运维家6 小时前
旧电脑跑不动课程软件,VDI云桌面怎样接着用?
运维·服务器·虚拟化·pve·vdi·云桌面
zhang133830890756 小时前
传统机械三杯式风速传感器易磨损冻堵?CG-88金属超声波风速风向传感器给出免运维方案
运维·服务器·网络·人工智能·自动化
知已难寻6 小时前
第 2 篇 · 云的地基:服务器、存储、网络三大基础设施
运维·服务器·网络·云原生·云计算·负载均衡·1024程序员节
IpdataCloud8 小时前
批量查IP的API接口怎么选?免费API配额瓶颈与离线库本地批量方案实测
网络·网络协议·tcp/ip
今天重构了吗9 小时前
Linux 上 rm -rf 删错了能找回吗
运维·服务器
ITyunwei09879 小时前
售后夜间值守怎么落地:从告警到交接的工单系统配置笔记
网络
Smoothcloud润云10 小时前
GPU远程纳管安全吗?最小权限、网络边界与日志审计实战
服务器·网络·人工智能·安全·gpu算力·gpu
ai大模型-探索者10 小时前
Function Call与MCP(区别、联系与实战)
java·服务器·网络