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);
相关推荐
RisunJan16 分钟前
Linux命令-sysctl(运行时修改内核参数)
linux·网络·智能路由器
A_humble_scholar30 分钟前
Linux 网络基础(三)下的 HTTP 核心详解:从请求响应到状态管
linux·网络·http
袅沫31 分钟前
Nginx中部署多个前端项目——区分路径
服务器·前端
Lucis__35 分钟前
如何实现长连接通信机制?Websocket的最佳实践
网络·websocket·网络协议
fei_sun40 分钟前
UVM中的TLM1.0通信
运维·服务器·uvm
MartinYeung544 分钟前
[论文学习]MCPTox:面向真实世界MCP服务器的工具投毒攻击基准测试
运维·服务器·学习
winfreedoms1 小时前
VMware 桥接模式无法联网:从 DHCPDISCOVER 到静态 IP 的完整排障实战
网络协议·tcp/ip·ubuntu·桥接模式·vmware·嵌入式学习
JAVA面经实录9172 小时前
网络编程基础(Java Web/分布式前置·完整版)(十一)
java·前端·网络
Shadow(⊙o⊙)2 小时前
Linux网络部分——TCP服务端、客户端架构分析多进程、多线程、线程池
c++·tcp/ip·架构
Escalating_xu2 小时前
【Linux】基础 I/O 深度解析:FILE、文件描述符、open/read/write、重定向与缓冲区
java·linux·服务器