news 2026/4/3 6:29:50

LwIP 提供了三种主要的 API 接口,分别针对不同的应用场景(如实时性、易用性、资源占用等),开发者可根据需求选择。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LwIP 提供了三种主要的 API 接口,分别针对不同的应用场景(如实时性、易用性、资源占用等),开发者可根据需求选择。

LwIP 提供了三种主要的 API 接口,分别针对不同的应用场景(如实时性、易用性、资源占用等),开发者可根据需求选择。三种 API 分别是:

1.RAW API(原始 API)

  • 特点
    最底层的 API,直接与 LwIP 内核交互,无操作系统依赖,通过回调函数(callback)处理协议栈事件(如数据接收、连接建立等)。
    不使用线程,所有操作在协议栈的事件处理上下文(通常是中断或定时器回调)中完成,资源占用极低(适合内存/算力受限的嵌入式设备)。

  • 核心机制
    基于事件驱动,例如:

    • 注册recv_callback处理收到的数据;
    • 注册connect_callback处理连接建立结果。
  • 适用场景
    无 OS 的裸机系统、对资源(RAM/ROM)要求严格的嵌入式设备(如单片机)、需要最高效率和实时性的场景。

  • 示例(TCP 服务器)
    通过tcp_listen()创建监听,注册accept回调;新连接到来时,在回调中注册recv回调处理数据。

2.NETCONN API(网络连接 API)

  • 特点
    基于 RAW API 封装的半阻塞式 API,通常与操作系统(OS)配合使用(依赖线程和信号量),提供类似“连接”的抽象(如netconn_new()创建连接、netconn_connect()建立连接)。
    操作可以阻塞(等待事件)或非阻塞,通过函数返回值判断操作结果(如netconn_recv()阻塞等待数据)。

  • 核心机制
    以“连接对象(struct netconn)”为核心,封装了底层的 socket 操作,隐藏了回调细节,提供更直观的函数接口(如netconn_send()netconn_recv())。

  • 适用场景
    有操作系统的嵌入式系统(如 RTOS),希望简化开发(避免直接处理回调),同时保持较好的资源效率。

  • 示例(TCP 客户端)

    structnetconn*conn=netconn_new(NETCONN_TCP);netconn_connect(conn,&server_addr,server_port);// 连接服务器netconn_send(conn,"hello");// 发送数据structnetbuf*buf;netconn_recv(conn,&buf);// 阻塞接收数据

3.Socket API(BSD 兼容套接字 API)

  • 特点
    兼容BSD Socket 标准的高层 API,与常见的 Linux/Windows 套接字接口几乎一致(如socket()bind()connect()recv()send()select()等)。
    依赖操作系统提供线程支持,操作以阻塞/非阻塞方式进行,开发门槛最低(熟悉 BSD Socket 的开发者可快速上手)。

  • 核心机制
    在 NETCONN API 之上进一步封装,模拟标准套接字的行为,支持select()/poll()等多路复用机制,提供最高的易用性。

  • 适用场景
    有操作系统(如 Linux、RTOS)、希望代码可移植(兼容传统 Socket 程序)、追求开发效率的场景。

  • 示例(UDP 通信)

    intsock=socket(AF_INET,SOCK_DGRAM,0);// 创建 UDP 套接字bind(sock,(structsockaddr*)&local_addr,sizeof(local_addr));sendto(sock,"data",4,0,(structsockaddr*)&peer_addr,sizeof(peer_addr));charbuf[100];recvfrom(sock,buf,sizeof(buf),0,NULL,NULL);// 接收数据

三种 API 的对比总结

特性RAW APINETCONN APISocket API
依赖无 OS需 OS(线程支持)需 OS(线程支持)
编程模式事件驱动(回调)半阻塞(函数调用)阻塞/非阻塞(类 BSD)
资源占用极低中等较高
易用性低(需理解内核机制)高(兼容标准)
实时性高(无线程切换)中(依赖 OS 调度)
典型应用裸机单片机RTOS 嵌入式系统带 OS 的嵌入式/PC

选择时需根据系统资源、开发效率、移植性等需求权衡:资源紧张选 RAW API,追求易用性和移植性选 Socket API,中间场景选 NETCONN API。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/7 22:08:03

如何解决7大显示器亮度难题?专业用户的多屏控制指南

如何解决7大显示器亮度难题?专业用户的多屏控制指南 【免费下载链接】twinkle-tray Easily manage the brightness of your monitors in Windows from the system tray 项目地址: https://gitcode.com/gh_mirrors/tw/twinkle-tray 多屏工作环境已成为专业人士…

作者头像 李华
网站建设 2026/3/21 7:13:50

GPT-OSS-20B轻量化部署尝试:量化压缩可行性分析

GPT-OSS-20B轻量化部署尝试:量化压缩可行性分析 1. 为什么关注GPT-OSS-20B的轻量化部署 大模型落地最常卡在“跑不动”三个字上。不是模型不够强,而是显存吃紧、推理太慢、部署成本高得让人望而却步。最近OpenAI开源的GPT-OSS系列模型中,20…

作者头像 李华
网站建设 2026/3/31 18:02:28

Awoo Installer完整指南:Nintendo Switch游戏安装的高效解决方案

Awoo Installer完整指南:Nintendo Switch游戏安装的高效解决方案 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer Awoo Installer是一款…

作者头像 李华
网站建设 2026/4/3 1:18:21

大电流电源模块布线:线宽计算与实例分析

以下是对您提供的技术博文进行 深度润色与专业重构后的终稿 。全文已彻底去除AI生成痕迹,强化工程现场感、教学逻辑性与可复用性;摒弃模板化结构,以真实项目节奏推进叙述;语言更贴近一线功率电子工程师的表达习惯——既有数据支…

作者头像 李华
网站建设 2026/3/28 11:51:17

3大突破点!用Nrfr工具突破应用区域限制的实战指南

3大突破点!用Nrfr工具突破应用区域限制的实战指南 【免费下载链接】Nrfr 🌍 免 Root 的 SIM 卡国家码修改工具 | 解决国际漫游时的兼容性问题,帮助使用海外 SIM 卡获得更好的本地化体验,解锁运营商限制,突破区域限制 …

作者头像 李华
网站建设 2026/3/14 14:27:01

YOLO11零售场景应用:货架识别系统实操手册

YOLO11零售场景应用:货架识别系统实操手册 在智能零售快速落地的今天,货架商品识别正从“能用”走向“好用”。YOLO11作为Ultralytics最新发布的高效目标检测框架,在精度、速度与部署友好性上实现了显著平衡——它不是简单堆叠参数的升级版&…

作者头像 李华