2015-04-02 16 views
0

我有一个UDP服务器和客户端连接。该堆栈是802.15.4,TSCH,6lowpan,IPv6。我相信在contiki中有一个函数列出客户端与服务器关联时的IP地址。我想知道我可以使用哪个函数来访问这个列表,保存到这个列表并从列表中获取存储的IP。如何访问contiki中的IP地址列表?

回答

0

无论你正在使用RPL,在半自助旅游旅行社服务器(设备RPL的情况下接收DIO消息和NDP的情况下RS消息),你可以通过查看邻居缓存访问的客户端列表。该缓存位于ds6_neighbors表中。

我想尝试类似的东西:

#include "uip-ds6-nbr.h" 
#include "nbr-table.h" 

uip_ds6_nbr_t *nbr = nbr_table_head(ds6_neighbors); 
while(nbr != NULL) { 
    // do something with the neighbor here 
    // its IP address is nbr->ipaddr 
    // ... 
    nbr = nbr_table_next(ds6_neighbors, nbr); 
} 
+0

在UDP身边,我想收集割舍的IP地址发送表示用户数据之前4级的客户。因此,UDP服务器应该能够将任何传入的IP地址与已存储的IP地址进行比较。这可能吗? – Yaant3y 2015-04-08 09:50:12

+0

当然是的,看看这里:http://senstools.gforge.inria.fr/doku.php?id=contiki:examples在“IPv6 UDP通信”示例中,并从tcpip_handler()函数获取灵感。使用'&UDP_IP_BUF-> srcipaddr'来查找传入的IP地址。如上所示,将其与邻居缓存中已经存储的地址进行比较。 – 2015-04-08 12:25:27

+0

当服务器接收到数据时,我可以像使用&UDP_IP_BUF-> srcipaddr那样访问源IP。之后,我应该比较邻居缓存。如果没有我手动添加IP地址,此邻居缓存是否会自动更新?在contiki里面有一个使用这个缓存过程的例子吗? – Yaant3y 2015-04-09 09:27:44