协议栈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. 涂抹mysql笔记-mysql复制特性

    <>mysql复制特性:既可以实现整个服务(all databases)级别的复制,也可以只复制某个数据库或某个数据库中的某个指定的表对象.即可以实现A复制到B(主从单向复制),B再复制到 ...

  2. C语言数据结构基础学习笔记——C语言基础

    抽象数据类型(ADT)是指一个数学模型以及定义在该模型上的一组操作,通常用(数据对象,数据关系,基本操作集)这样的三元组来表示抽象数据类型. 数据结构是相互之间存在一种或多种特定关系的数据元素的集合, ...

  3. 200用户的并发用户配置(CSV)

    我来解释一下为什么标题是,设置多个参数对浏览器进行访问,原本想写成对app或者web,但是我想只要有参数的地方无聊是app或者web或者小程序,都是可以用到设置参数的. 第一步:在线程组下添加参数配置 ...

  4. !学习笔记:前端测试 、前端调试、console 等

    http://www.cnblogs.com/rubekid/p/4851988.html 你真的了解 console 吗 2014 http://www.codeceo.com/article/ja ...

  5. 在VMware中为Redhat HAT配置本地yum源

    在VMware中为Redhat HAT配置本地yum源 今天准备使用CM安装大数据环境,到需要几台机器都使用同一套yum源才可以,所以想到将Redhat镜像文件拷贝到虚拟机中,在挂起使用,最后通过ht ...

  6. kettle 常用组件

    Dummy步骤不会做任何事情.它的主要功能是作为以测试为目的的占位符. 追加流 分析查询(前后行查询),步骤:增加常量数据包括id,name连个字段,增加自增列autoid字段,按id,outid进行 ...

  7. 获取电脑的 SN 码

    wmic bios get serialnumber

  8. Elasticsearch **代码片段

    ```JAVA BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery(); RangeQueryBuilder createTimeQuery ...

  9. 高并发高负载系统架构-php篇

    首先呢,我罗列一下文章的目录,让大家有个整体轮廓的了解! 1.为什么要进行高并发和高负载的研究 2.高并发和高负载的约束条件 3.解决之道——硬件篇 4.解决之道——部署篇 5.解决之道——环境篇 6 ...

  10. MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结

    MySQL中有六种日志文件,分别是:重做日志(redo log).回滚日志(undo log).二进制日志(binlog).错误日志(errorlog).慢查询日志(slow query log).一 ...