缓冲区函数
函数名称 | 功能 | 原型 | 参数 | 返回 |
netbuf_new() | 分配并初始化一个netbuf结构 | Struct netbuf *netbuf_new (void) | 无 | NULL: 无可用的内存时 netbuf:函数正常调用,返回一个netbuf结构的指针 |
netbuf_delete() | 回收已经建立的netbuf结构 | void netbuf_delete (struct netbuf *buf) | buf: 准备回收的netbuf结构 | 无 |
netbuf_alloc () | 为指定的netbuf结构分配指定字节大小的缓冲区内存 | void *netbuf_alloc(struct netbuf *buf, u16_t size) | buf: 指定一个待分配内存的netbuf结构 size: 指定为netbuf分配内存的字节数 | NULL: 无可用的内存时 void *:函数正常调用,返回一个指向已分配内存的指针 |
netbuf_free() | 回收与指定的netbuf结构相关联的缓冲区 | void netbuf_free(struct netbuf *buf) | buf: 指定的netbuf结构 | 无 |
netbuf_ref() | 回收与指定的netbuf结构相关联的缓冲区 | err_t netbuf_ref (struct netbuf *buf, const void *dataptr, u16_t size) | buf: 指定的netbuf结构 dataptr:指向存储区数据的指针 size:存储区数据的大小(以字节为单位) | buf: 指定的netbuf结构 dataptr:指向存储区数据的指针 size:存储区数据的大小(以字节为单位) |
netbuf_chain () | 将两个netbuf结构的首尾链接在一起 | void netbuf_chain (struct netbuf *head, struct netbuf *tail) | head: 首部的netbuf结构 tail:尾部的netbuf结构 | 无 |
netbuf_data() | 获取一个指向netbuf 结构中的数据的指针 | err_t netbuf_data (struct netbuf *buf, void **dataptr, u16_t *len) | err_t netbuf_data (struct netbuf *buf, void **dataptr, u16_t *len) | ERR_OK:数据被正确地获取 ERR_BUF:有错误发生,数据未能被正确地获取 |
netbuf_next() | 修改netbuf中的数据片段的指针以便指向netbuf中的下一个数据片段 | s8_t netbuf_next(struct netbuf *buf) | buf: 需要修改数据片段指针的netbuf结构 enum函数 | -1:表明已经到了最后一个数据片段的后面的位置,netbuf中已经没有数据片段了 1: 表明指针现在正指向最后一个数据片段 0: 表明netbuf中还有很多的数据片段存在 |
netbuf_first () | 修改netbuf中的数据片段的指针以便指向netbuf中的下一个数据片段 | void netbuf_first(struct netbuf *buf) | buf: 需要修改数据片段指针的netbuf结构 | 无 |
其它函数 | 函数 netbuf_copy()的定义服务的, 完成数据块复制的功能 | netbuf_len()用来获取 netbuf buf中的数据长度 | netbuf_fromaddr()用于获取接收到的 netbuf buf的主机 IP地址。 | netbuf_fromport()用于获取接收到的 netbuf buf 的主机端口号。 |
网络连接函数调用
函数名称 | 功能 | 原型 | 参数 | 返回 |
netconn_new_with_proto_and_callback () | 建立一个确定类型的连接,并为其分配一个回调函数 | struct netconn *netconn_new_with_proto_and_callback (enum netconn_type t, u8_t proto, netconn_callback callback) | 见下*1 | NULL: 当内存分配错误时 netconn: 函数正常调用,返回一个netconn结构的指针 |
netconn_delete () | 关闭一个netconn连接并释放它占用的所有资源 | err_t netconn_delete(struct netconn *conn) | conn: 准备删除的连接 | ERR_OK:当连接被正确删除时 |
netconn_type () | 获取由参数conn指定的连接类型 | enum netconn_type netconn_type (struct netconn *conn) | conn: 指定获取类型的连接 | 参数conn的连接类型,为枚举类型enum netconn_type中的一项,与函数netconn_new_with_proto _and_callback()中的参数t相同 |
netconn_getaddr () *2 | 获取指定连接的远程或本地的IP地址及端口号 | err_t netconn_getaddr (struct netconn *conn, struct ip_addr *addr, u16_t *port, u8_t local) | *3 | ERR_OK:表示正确获取了当前连接信息 ERR_CONN:表示当前连接不可用 |
netconn_bind () | 为指定的连接绑定确定的本地IP地址和端口号 | err_t netconn_bind(struct netconn *conn, struct ip_addr *addr, u16_t port) | conn: 指定要绑定的连接 addr: 为连接指定绑定的IP地址(当等于参数IP_ADDR_ANY时,则绑定到所有的本地IP地址)。 port: 为连接指定绑定的端口号,不能用于RAW | ERR_OK:表示绑定正确 其它一个不确定的值:表示绑定失败 |
netconn_connect () | 将一个指定的连接连接到一个具有指定IP 地址和端口号的主机 | err_t netconn_connect (struct netconn *conn, struct ip_addr *addr, u16_t port) | conn: 指定一个连接 addr: 连接远程主机的IP地址 port: 连接远程主机的端口号(不能用于RAW类型的连接) | ERR_OK:当正确地建立连接时 |
netconn_disconnect () | 断开一个指定的连接(仅能用于UDP连接) | err_t netconn_disconnect (struct netconn *conn) | conn: 指定要断开的连接 | ERR_OK:当连接被正确删除时 |
netconn_listen_with_backlog () | 使指定的连接进入TCP(TCP LISTEN)监听状态 | err_t netconn_listen_with_backlog (struct netconn *conn, u8_t backlog) | conn: 指定准备设置进入监听状态的TCP类型的连接 backlog:设定监听的积压工作,即可以有多少工作等待处理,使用它必须在文件lwipopts.h中设置 TCP_LISTEN_BACKLOG = 1 | ERR_OK:表示连接正确进入监听状态 其它值:表示有错误发生 |
netconn_accept () | 阻塞进程直至从远程主机发出的连接请求到达指定的连接 | struct netconn *netconn_accept (struct netconn *conn) | conn: 指定一个已经建立了的TCP类型的连接 | netconn:表示与远程主机正确地建立了连接,返回新连接的数据结构 NULL:表示超时连接失败 |
netconn_recv () | 阻塞进程,等待数据到达指定的连接 | struct netbuf *netconn_recv (struct netconn *conn) | conn: 指定一个接收数据的连接 | NULL:表示连接已经被远程主机关闭 netbuf: 数据正确接收,返回一个包含着接收到的数据的netbuf结构 |
netconn_sendto () | 向远程主机发送数据(仅能用于UDP 或RAW类型的连接) | err_t netconn_sendto (struct netconn *conn, struct netbuf *buf, struct ip_addr *addr, u16_t port) | conn: 指定发送数据的连接 buf:包含发送数据的一个缓冲区数据结构 addr:远程主机的IP地址 port:远程主机的端口号 | ERR_OK:表示数据被正确地发送 err_t类型的其它值:表示有错误发生 |
netconn_send () | 发送数据(仅能用于UDP 或RAW类型的连接) | err_t netconn_send (struct netconn *conn, struct netbuf *buf) | conn: 指定发送数据的连接 buf:包含发送数据的一个缓冲区数据结构 | ERR_OK:表示数据被正确地发送 err_t类型的其它值:表示有错误发生 |
netconn_write () | 发送TCP数据 | err_t netconn_write (struct netconn *conn, const void *dataptr, int size, u8_t apiflags) | *4 | ERR_OK:表示数据被正确地发送 err_t类型的其它值:表示有错误发生 |
netconn_close () | 关闭指定的TCP连接 | err_t netconn_close (struct netconn *conn) | conn: 指定关闭的连接 | ERR_OK:表示连接正常关闭 err_t类型的其它值:表示有错误发生 |
netconn_join_leave_group() | 使连接参加或退出一个UDP 类型的多播组 | err_t netconn_join_leave_group (struct netconn *conn, struct ip_addr *multiaddr, struct ip_addr *interface, enum netconn_igmp join_or_leave) | conn::指定一个用于改变多播地址的UDP 类型的连接 multiaddr:参加会退出多播组的广播IP地址 interface:用于发送igmp信息的网络接口的IP地址 join_or_leave:表示参加还是退出一个多播组,可以为NETCONN_JOIN 或NETCONN_LEAVE | ERR_OK:表示连接被正确加入或退出多播组 err_t类型的其它值:表示有错误发生 |
netconn_gethostbyname () | 进行一次DNS 的查询 | err_t netconn_gethostbyname (const char *name, struct ip_addr *addr) | name:一个字符串,表示要查询的一个DNS主机的名字 addr:查询到的DNS名字对应的IP地址 | *5 |
函数 netconn_peer()表示获取远程主机的 IP地址及端口号 | netconn_addr()则表示 获取指定连接的本地 IP地址和端口号。 | 函数 netconn_listen()表示使 TCP进入监听(TCP LISTEN)状态, | 函数 netconn_err()和 netconn_recv_bufsize()则表示获取 conn 连接的一些状态信息 | |
IP4_ADDR(ipaddr, a,b,c,d) | 格式化指定设置的IP地址 | *6 | ipaddr:指定要格式化的ipaddr类型的数据 a:IP地址的最高字节 b:IP地址的第三个字节 c:IP地址的第二个字节 d:IP地址的最低字节 | 无 |
*1 t: 所创建的连接的类型,可以取 NETCONN_INVALID:NETCONN_TCP、NETCONN_UDP、
NETCONN_UDPLITE、NETCONN_UDPNOCHKSUM、NETCONN_RAW
proto:RAW IP pcb的IP协议
callback:当物理链路有数据接收或发送时调用的回调函数
*2 netconn_peer()和 netconn_addr(),分别
用于获取远程主机的 IP地址信息和本地主机的 IP地址信息
*3 conn: 指定的连接
addr: 该参数为结果参数,存放获取连接的IP地址
port: 该参数为结果参数,存放获取连接的端口号(对于RAW,存放协议类型)
local: 为1表示获取本地主机的IP地址及端口号;为0表示获取远程主机的IP地址及端口号
*4 conn: 准备发送数据的TCP连接
dataptr:指向发送数据缓冲区的指针
size:发送数据的长度。这里对数据长度没有任何限制。这个函数不需要应用程序明确地分配缓冲
区(buffers),因为这可由协议栈来负责
apiflags:可以取 NETCONN_NOCOPY 、NETCONN_COPY 和 NETCONN_MORE 中的一个。当
flags值为NETCONN_COPY时, dataptr指针指向的数据将被复制到为这些数据分配的内存缓冲区。
这就允许这些数据在函数调用后可以直接修改,但是这会在执行时间和内存使用率方面有所降低。
如果 flags 值为 NETCONN_NOCOPY,则数据不会复制而是直接使用 dataptr 指针来引用。
这些数
据在函数调用后不能被修改,因为这些数据可能会被放在当前指定连接的重发队列,并且会在里面
逗留一段不确定的时间。 当要发送的数据在ROM中因而数据不可变时很有用。 而参数NETCONN_
MORE则指向上次发送的那个数据段,适用于连续发送数据的情况。。
*5 ERR_OK: 表示查询成功,函数正常返回。
ERR_MEM:内存错误,稍后会重试,重新查询。
ERR_ARG:DNS客户端未初始化或者没有到合适的主机名。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论