contiki TCP

UDP-Client  

print_local_addresses(void功能

 

 

 

 

这个函数的主要作用就是打印一下可用的IP地址。UIP_DS6_ADDR_NB这个应该是IPV6的地址的数量,在原厂代码中为3.uip_ds6_if是uip-ds6中定义的一个数据结构,包含了所有的接口变量。

addr_list中就是所有的IPV6地址。for循环就是将其中的IPV6地址都查找一遍,看它的状态。IPV6的地址有三种状态,一种是PREFERRED,代表IPV6地址可用。第二种是TENTATIVE,代表未知。最后一种代表其他主机正在使用,DEPRECATED。

https://blog.csdn.net/wh357589873/article/details/40657183

 

tcpip_handler(void)

 

 

 

第一眼看的时候,发现好多不知道怎么出来的变量,例如uip_appdata,uip_datalen(),uip_newdata(),查看库函数就可以很清楚的知道,uip_newdata()就是代表是否有新的数据到来,uip_appdata直接就是代表到来的数据,uip_datalen()是指到来数据的长度。通过它们的命名也可以猜出来。uip_ipaddr_copy(&server_conn->ripaddr, &UIP_IP_BUF->srcipaddr);这句代码是将客户端的地址赋值到咱们申请的conn中,因为服务器需要回复客户机,因此需要客户机的地址。通过接收到的这个数据找到源端的地址。而#define UIP_IP_BUF   ((struct uip_ip_hdr *)&uip_buf[UIP_LLH_LEN])这句可以知道UIP_IP_BUF  其实代表的是uip_buf,查看库函数可以知道uip_buf就是代表的接收数据的缓存区,当有数据到来的时候就是在这里,但是这个数据不能直接将源端的地址提取出来,因此将其强制转换成uip_ip_hdr格式的数据。这种格式的数据中可以直接得到源端数据。

https://blog.csdn.net/wh357589873/article/details/40744181

posted @ 2020-06-05 11:09  创世哥  阅读(24)  评论(0编辑  收藏  举报