协议栈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连接。