协议栈api函数

1、netconn_new      //UDP    TCP

struct netconn*netconn_new(enum netconn_type t)

为新连接申请一个连接结构netconn空间

2、netconn_delete  //UDP   TCP

err_t  netconn_delete(struct netconn *conn)

删除一个连接结构netconn

3、netconn_getaddr

err_t netconn_getaddr(struct netconn *conn, ip_addr_t *addr, u16_t *port, u8_t local)

获得一个连接结构netconn中的源IP地址和源端口号或者目的IP地址和目的端口号,local指明是获得源地址信息还是目的地址信息,当为1时表示本地,即源地址信息。

4、netconn_bind   //UDP   TCP

err_t netconn_bind(struct netconn *conn, ip_addr_t *addr, u16_t port)

将一个连接结构与本地IP地址addr(IP_ADDR_ANY代表任何一个网络接口的IP地址)和端口号port进行绑定,作为服务器端程序,执行这一步的操作是必要的,服务器必须与熟知端口进行绑定才能接收客户端的连接请求。

5、netconn_connect

err_t netconn_connect(struct netconn *conn, ip_addr_t *addr, u16_t port)

连接服务器,它将连接结构与目的IP地址addr和目的端口号port进行绑定,当作为TCP客户端程序时,调用该函数会导致连接握手产生。

6、netconn_disconnect

err_t netconn_disconnect(struct netconn *conn)

只能使用在UDP连接中,功能是与服务器断开连接,对于UDP来说,就是将UDP控制块中的remote_ip和remote_port字段值清除。

7、netconn_listen

函数本质是一个宏,其调用原型如下

#define netconn_listen(conn) netconn_listen_with_backlog(conn, TCP_DEFAULT_LISTEN_BACKLOG)

只在TCP的服务器程序中使用,函数的功能是将连接结构netconn置位侦听状态,即将TCP控制块的状态设置为LISTEN状态。

8、netconn_accept

err_t netconn_accept(struct netconn *conn, struct netconn **new_conn)

一个只用于TCP服务器程序的函数,服务器调用此函数可以从acceptmbox邮箱中获得一个新建立的连接,若邮箱为空,则函数会一直阻塞,直至新连接到来。

9、netconn_recv

err_t   netconn_recv(struct netconn *conn, struct netbuf **new_buf);

从连接的recvmbox邮箱中接收数据包,可用于TCP连接,也可用于UDP连接。函数会一直阻塞,直至从邮箱中获得数据消息,连接数据都封装在netbuf中。

10、netconn_send

err_t   netconn_send(struct netconn *conn, struct netbuf *buf);

用于已经建立的UDP连接上(即UDP控制块中记录了目的IP地址和目的端口号)发送数据。

11、netconn_write

#define netconn_write(conn, dataptr, size, apiflags) \
          netconn_write_partly(conn, dataptr, size, apiflags, NULL)

用于在稳定的TCP连接上发送数据。

12、netconn_close

err_t   netconn_close(struct netconn *conn);

关闭一个TCP连接。

LwIP协议栈接口的更多相关文章

  1. lwip协议栈学习---udp

    书籍:<嵌入式网络那些事-lwip协议> udp协议的优点: 1)基于IP协议,无连接的用户数据报协议,适用于传送大批量数据, 2)实时性比较高,适用于嵌入式网络 发送函数:udp_sen ...

  2. LwIP协议栈规范翻译——摘要目录

    摘要 LwIP是一种TCP/IP协议栈的实现.LwIP协议栈专注于减少内存的使用和代码的大小,使LwIP适用于嵌入式系统中在有限的资源下能够使用小型的客户机.为了减少处理和内存的需求,LwIP使用裁剪 ...

  3. LwIP协议栈开发嵌入式网络的三种方法分析

    LwIP协议栈开发嵌入式网络的三种方法分析   摘要  轻量级的TCP/IP协议栈LwIP,提供了三种应用程序设计方法,且很容易被移植到多任务的操作系统中.本文结合μC/OS-II这一实时操作系统,以 ...

  4. 基于Lwip协议栈中独立模式下回调函数的使用

    一.使用Lwip协议独立模式开发 最近在STM32F4上边移植了Lwip,Lwip是一个小型开源的TCP/IP协议栈,有无操作系统的支持都可以运行.我当前只测试了TCP Server功能,然后对TCP ...

  5. 一种基于uCos-II操作系统和lwIP协议栈的IEEE-1588主站以及基于该主站的报文处理方法

    主站以及应用于电力系统的支持IEEE‐1588协议的主时钟(IEEE‐1588主站)的实现方法.该方法是在一个低成本的硬件平台上,借助uCos‐II操作系统和TCP/IP的协议栈,对以太网数据进行了分 ...

  6. 1、 LwIP协议栈规范翻译——简介

    1.简介 在过去几年中,计算机和计算机支持设备接之间的互联到无线网络日趋增加.计算机已经越来越无缝的集成在了日常的设备且价格也在下降.同时,无线网络技术例如蓝牙[HNI+98]和IEEE802.11b ...

  7. LwIP协议栈(2):网络接口

    在LwIP中,物理网络硬件接口结构保存在一个全局链表中,它们通过结构体中的 next 指针连接. struct netif { /// pointer to next in linked list * ...

  8. lwip协议栈移植(1)

    lwip移植分为两类: 1,只移植内核核心,用户应用程序编写只能基于raw/callback api进行 2,移植内核核心和上层API函数模块,用户可以使用所有三种API编程,即 raw/callba ...

  9. 5、 LwIP协议栈规范翻译——操作系统仿真层

    为了使lwIP可移植,操作系统特定的函数调用和数据结构不直接在协议的代码中使用.相反,当需要这样的函数调用和数据结构时,直接使用操作系统仿真层. 操作系统仿真层为操作系统服务提供统一的接口,如定时器, ...

随机推荐

  1. Navicat工具怎么连接oracle数据库

    当我们安装完oracle数据库之后,我们会想着用可视化工具连接,navicat是我们常用的可视化连接数据库的工具 当我们安装完oracle数据库的时候,我们需要先启动他 先把相应的服务启动 保证这两个 ...

  2. weex Mac创建项目

    序言:本来在win 10 上创建项目真的很顺利!后来入手一个mac就从mac 上下载了最新的android studio开始搞起了weex,问题来了,weex-toolkit脚手架还是老的,我觉得是w ...

  3. 游戏中转盘概率的算法---python实现

    加入转盘的内容及概率如下 转盘倍数 0.5 0.6 0.7 0.8 1 1.2 1.5 1.8 2 机率 0.2 0.15 0.15 0.2 0.2 0.1 0.1 0.05 0.05 下面来实现转盘 ...

  4. 三. html&JavaScript&ajax 部 分

    1. 判 断 第 二 个 日 期 比 第 一 个 日 期 大 如何用脚本判断用户输入的的字符串是下面的时间格式2004-11-21必须要保证用户 的输入是此格式,并且是时间,比如说月份不大于12等等, ...

  5. RestExpress response中addHeader 导致stackOverflow

    问题描述: 最近在项目使用中要在restExpress的header中增加一个键值对,同事在使用的时候没有对header的value进行非空判断,于是在测试环境测试的时候就出现了一个异常

  6. CentOS开机自动运行自己的脚本详解

    一.root权限编辑/etc/rc.d/rc.local su cd /etc/rc.d/ vi rc.local 二.在这个文件加上你要执行的脚本,全部内容如下: #!/bin/sh # # Thi ...

  7. 一个nginx 回源限速的bug处理过程记录

    一个生产环境,nginx占用cpu很高. top - :: up day, :, users, load average: 13.26, 13.20, 13.20 Tasks: total, runn ...

  8. Android 阻隔返回键

    //阻隔 返回键 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.K ...

  9. 使用jQuery+huandlebars循环遍历中使用索引

    兼容ie8(很实用,复制过来,仅供技术参考,更详细内容请看源地址:http://www.cnblogs.com/iyangyuan/archive/2013/12/12/3471227.html) & ...

  10. jQuery.extend 与 jQuery.fn.extend

    extend方法为jQuery对象的核心之一,语法如下: jQuery.extend([deep], target, object1, [objectN]),返回值Object. 概述:用一个或多个其 ...