收藏官网首页
查看: 12201|回复: 1

uIP介绍-主要接口说明

51

主题

99

帖子

827

积分

高级会员

Rank: 4

积分
827
跳转到指定楼层
楼主
发表于 2016-3-4 16:09:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发
首先介绍几个接口:
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[conn]; \
                                uip_process(UIP_TIMER); } while (0)
#define uip_periodic(conn) do { uip_conn = &uip_conns[conn]; \
                                uip_process(UIP_TIMER); } while (0)





uip_buf:定义如下u8_t uip_buf[UIP_BUFSIZE + 2];所有的数据处理都是通过处理它来完成的。比如接受的数据存储在这里,要发送的数据有会放在这里。
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


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表