个人知识库 个人知识库
首页
关于
  • C语言
  • CPlusPlus
  • Linux
  • PHP
  • Nginx
  • MySQL
  • Redis
  • Docker
  • Kubernetes
  • SRS
阅读
常用工具
  • 分类
  • 标签
  • 归档
GitHub

Agnes001

坚持是一件很伟大的事业
首页
关于
  • C语言
  • CPlusPlus
  • Linux
  • PHP
  • Nginx
  • MySQL
  • Redis
  • Docker
  • Kubernetes
  • SRS
阅读
常用工具
  • 分类
  • 标签
  • 归档
GitHub
  • C语言

  • CPlusPlus

  • Lua技术栈

  • edoyun

  • 内存管理

  • 数据结构

  • 网络编程

    • 网络基础
    • 基于TCP和UDP通信的服务端和客户端
    • 结构化网络消息
    • Linux

    • 池化技术

    • 操作系统

    • python

    • 编程技术
    • 网络编程
    Agnes001
    2022-06-28

    发送结构化网络消息

    纯字符串网络信息 优点:处理简易命令方便快捷; 缺点:传递大量数据时字符串解析消耗大 企业中的应用方式:json、xml、自定义格式的字符数据格式

    使用结构化的二进制数据流传输网络消息 优点:简单、方便、解析快,消耗低 缺点:需要严格的网络字节序

    # 网络数据报文的格式定义

    • 报文有两部分,包头和包体,是网络消息的基本单元
    • 包头:描述本次消息包的大小,描述数据的作用
    • 包体:数据

    # select模型

    服务端升级为select模型处理多客户端

    // windows下第一个参数不起作用
    // nfds是一个整数值,是指fd_set集合中所有描述符(socket)的范围,而不是数量
    // 既是所有文件描述符最大值+1,在windows中这个参数可以写0
    int select(
      int nfds,
      fd_set FAR * readfds,
      fd_set FAR * writefds,
      fd_set FAR * exceptfds,
      const struct timewal FAR * timeout
    );
    
    typedef struct fd_set {
      u_int fd_count;               /* how many are SET? */
      SOCKET  fd_array[FD_SETSIZE];   /* an array of SOCKETs */
    } fd_set;
    
    编辑此页
    基于TCP和UDP通信的服务端和客户端
    Linux基础

    ← 基于TCP和UDP通信的服务端和客户端 Linux基础 →

    Theme by Vdoing
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式