netconn结构为lwip抽象出的描述一个连接供应用程序使用。
netconn api函数接口也对操作函数进行统一封装供使用。
netconn结构体
struct netconn
{
/** netconn 类型 */
enum netconn_type type;
/** 当前 netconn 状态 */
enum netconn_state state;
/** LwIP 的控制块指针,如 TCP 控制块、 UDP 控制块 */
union
{
struct ip_pcb *ip;
struct tcp_pcb *tcp;
struct udp_pcb *udp;
struct raw_pcb *raw;
} pcb;
err_t pending_err;/** 这个 netconn 最后一个异步未报告的错误 */
sys_sem_t op_completed; //信号量
/** 消息邮箱,存储接收的数据,直到它们被提取 */
sys_mbox_t recvmbox;
/** 用于 TCP 服务器上的请求连接缓冲区 */
sys_mbox_t acceptmbox;
/** 标志 */
u8_t flags;
#if LWIP_TCP
/** 当调用 netconn_write() 函数发送的数据不适合发送缓冲区时,
数据会暂时存储在 current_msg 中,等待数据合适的时候进行发送 */
struct api_msg *current_msg;
#endif /* LWIP_TCP */
/** 连接相关的回调函数 */
netconn_callback callback;
};
netconn type类型
enum netconn_type {
NETCONN_INVALID = 0,
/* NETCONN_TCP Group */
NETCONN_TCP = 0x10,
/* NETCONN_UDP Group */
NETCONN_UDP = 0x20,
NETCONN_UDPLITE = 0x21,
NETCONN_UDPNOCHKSUM= 0x22, //无校验UDP
/* NETCONN_RAW Group */
NETCONN_RAW = 0x40
};
netconn状态
enum netconn_state {
NETCONN_NONE, //不处于任何状态
NETCONN_WRITE, //正在写(发送)数据
NETCONN_LISTEN, //处于监听状态
NETCONN_CONNECT,//处于连接状态
NETCONN_CLOSE //处于关闭状态
};
netconn回调函数
typedef void (* netconn_callback)(struct netconn *, enum netconn_evt, u16_t len);
|