Snail 发表于 2016-3-4 16:09:23

uIP介绍-主要接口说明

首先介绍几个接口:
uip_init完成协议栈的初始化: 主要是:主要初始化协议栈的侦听端口(监听的uip_listenports)和默认所有连接是关闭的,uip_conns 就是tcp socket的初始化;
uip_input和uip_per iodic在协议的内部采用(即调用)同一个函数void uip_process(u8_t flag)实现,区别在于调用的参数不同;
uip_input的入参是:UIP_DATA   //#define uip_input()      uip_process(UIP_DATA)
uip_periodic的入参是:UIP_TIMER//#define uip_periodic(conn) do { uip_conn = &uip_conns; \
                              uip_process(UIP_TIMER); } while (0)
#define uip_periodic(conn) do { uip_conn = &uip_conns; \
                              uip_process(UIP_TIMER); } while (0)




uip_buf:定义如下u8_t uip_buf;所有的数据处理都是通过处理它来完成的。比如接受的数据存储在这里,要发送的数据有会放在这里。
uip_len:uip_buf有用数据的字节
uip_appdata:uip_buf第一个可用字节的指针
uip_conn:总是指向当前连接的指针,定义:struct uip_conn *uip_conn; 下面是TCP连接的结构,用来区别不同的TCP连接,uip_tcp_appstate_t appstate是可以读


示例:建立一个udp socket:

dhcpc_init(const void *mac_addr, int mac_len)
{
uip_ipaddr_t addr;

s.mac_addr = mac_addr;
s.mac_len= mac_len;

s.state = STATE_INITIAL;
uip_ipaddr(addr, 255,255,255,255);
s.conn = uip_udp_new(&addr, HTONS(DHCPC_SERVER_PORT));
if(s.conn != NULL) {
    uip_udp_bind(s.conn, HTONS(DHCPC_CLIENT_PORT));
}
PT_INIT(&s.pt);
}



DHCP是基于udp之上,端口是:67


never 发表于 2016-3-4 16:10:50

{:3_48:}赞
页: [1]
查看完整版本: uIP介绍-主要接口说明