【发布时间】:2015-04-02 15:53:37
【问题描述】:
我有一个 UDP 服务器和客户端连接。堆栈是 802.15.4、TSCH、6lowpan、IPv6。我相信 contiki 中有一个功能可以列出与服务器关联的客户端的 IP 地址。我想知道我可以使用哪个函数来访问这个列表、保存到这个列表并从这个列表中获取存储的 IP。
【问题讨论】:
我有一个 UDP 服务器和客户端连接。堆栈是 802.15.4、TSCH、6lowpan、IPv6。我相信 contiki 中有一个功能可以列出与服务器关联的客户端的 IP 地址。我想知道我可以使用哪个函数来访问这个列表、保存到这个列表并从这个列表中获取存储的 IP。
【问题讨论】:
无论您是否使用 RPL,在 contiki 服务器(设备在 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);
}
【讨论】:
&UDP_IP_BUF->srcipaddr 查找传入的IP 地址。将其与我在上面向您展示的邻居缓存中已经存储的地址进行比较。
uip_ds6_nbr_add()。服务器可以使用此缓存来创建已连接设备的列表。但取决于您想要什么,您可能必须创建自己的列表并依靠后者进行比较。