zoukankan      html  css  js  c++  java
  • 【lwip】02_三种编程接口


    前言

    李柱明博客:https://www.cnblogs.com/lizhuming/p/15487055.html

    2. 三种编程接口

    • RAW/Callback API

    • NETCONN API

    • SOCKET API

    2.1 RAW/Callback API

    内核回调型的 API。

    这种 API 可以在裸机和 OS 上使用。

    而裸机只能使用这种 API。

    优点:

    • 可以在没有操作系统的环境中使用。
    • 在有操作系统的环境中使用它,对比另外两种 API,可以提高应用程序的效率、节省内存开销。

    缺点:

    • 基于回调函数开发应用程序时的思维过程比较复杂。
    • 在操作系统环境中,应用程序代码与内核代码处于同一个线程。如果应用程序占用的时间过长,而且碰巧这时又有大量的数据包到达,由于内核代码长期得不到执行,网卡接收缓存里的数据包就持续积累,到最后很可能因为满载而丢弃一些数据包,从而造成丢包的现象。

    2.2 NETCONN API

    NETCONN API 是基于操作系统的 IPC 机制(即信号量和邮箱机制)实现的。

    内核代码和网络应用程序分离成了独立的线程:

    • 内核代码线程:tcpip_thread
    • 网络应用程序线程:按各种网络模块区分。
    • 优先级参考:
    线程 优先级
    LwIP 内核线程 tcpip_thread 很高
    重要的网络应用程序
    不太重要&处理数据比较耗时的网络应用程序

    优缺点:

    • 相对 RAW/Callback API

      • 用户可以按照操作文件的方式来操作网络连接。
      • 依赖与信号量和邮箱,消耗更多时间和内存,效率降低。
    • 相对 Socket API

      • 避免了内核程序和网络应用程序之间的数据拷贝,提高数据递交效率。
      • Socket API 的易用性较好,NETCONN API 需要了解内核结构体。

    2.3 SOCKET API

    套接字接口。

    Socket API 具有更好的易用性&移植性。

    LwIP 的 Socket API 是基于 NETCONN API 实现的。

    参考

  • 相关阅读:
    ibatis报错
    struts配置时遇到的几个问题
    快乐工作,快乐生活
    浅谈协方差矩阵理解篇
    类成员变量初始化
    类对象所占内存空间总结
    const 成员函数
    Qt对话框QDialog
    const引用返回值
    Qt 对象间的父子关系
  • 原文地址:https://www.cnblogs.com/lizhuming/p/15487055.html
Copyright © 2011-2022 走看看