分类:
2012-04-18 23:21:12
原文地址:LWIP UDP 协议分析 作者:疯也枉然
一、udp.c实现的函数
1、void udp_input(struct pbuf *p, struct netif *inp)
说明:处理接收到的udp数据包。
参数:p数据包缓存区;inp网络接口。
2、err_t udp_send(struct udp_pcb *pcb, struct pbuf *p)
说明:发送udp包。这个函数直接调用udp_sendto()函数。
参数:pcb协议控制块;p数据包发送缓存区。
返回:ERR_OK发送成功;ERR_MEM发送溢出;ERR_RTE不能发送到指定ip;其它表示发送失败。
3、err_t udp_sendto(struct udp_pcb *pcb, struct pbuf *p,
struct ip_addr *dst_ip, u16_t dst_port)
说明:发送udp包到指定ip地址。
参数:pcb协议控制块;p数据包发送缓存区;dst_ip目的ip地址;dst_port目的端口号。
4、err_t udp_sendto_if(struct udp_pcb *pcb, struct pbuf *p,
struct ip_addr *dst_ip, u16_t dst_port, struct netif *netif)
说明:按照指定的网络接口和ip地址发送udp包。
参数:pcb协议控制块;p数据包发送缓存区;dest_ip目的ip地址;dst_port目的端口号,netif网络接口。
5、err_t udp_bind(struct udp_pcb *pcb, struct ip_addr *ipaddr, u16_t port)
说明:在协议控制块中绑定本地ip地址和本地端口号
参数:pcb协议控制块;ipaddr本地ip地址;port本地端口号。
返回:ERR_OK成功;ERR_USE已经被占用。
6、err_t udp_connect(struct udp_pcb *pcb, struct ip_addr *ipaddr, u16_t port)
说明:与远端udp主机建立连接。
参数:pcb所需连接的协议控制块;ipaddr远端ip地址;port远端端口号。
7、void udp_disconnect(struct udp_pcb *pcb)
说明:断开指定连接。
参数:pcb所需断开连接的协议控制块。
8、void udp_recv(struct udp_pcb *pcb,
void (* recv)(void *arg, struct udp_pcb *upcb, struct pbuf *p,
struct ip_addr *addr, u16_t port),
void *rev_arg)
说明:设置接收到数据包时调用的回调函数及其参数。
参数:pcb协议控制块;recv回调函数名(地址);rev_arg回调函数参数。
这个函数直接修改pcb->recv和pcb->recv_arg的值。
9、void udp_remove(struct udp_pcb *pcb)
说明:删除指定udp协议控制块,从协议控制链表中删除并释放内存资源。
参数:pcb所要删除的协议控制块。
10、struct udp_pcb * udp_new(void)
说明:创建udp协议控制块,并不分配资源。
返回:协议控制块指针,指向NULL。