Contiki节点A向另一个节点B发送数据,我希望节点A和B通过边界路由器向运行Linux的服务器发送数据



我能够通过边界路由器将数据从节点发送到运行在Linux上的服务器代码。我用https://github.com/contiki-os/contiki/blob/master/examples/udp-ipv6/udp-client.cContiki的示例代码。我正在运行一个python代码来在Linux板上接收这些数据,请参阅此Linux用户空间代码,以在Linux板和运行contiki-udp发送器的每个节点之间进行通信。让我们将节点node_a、第二个节点node_B和Linux板称为node_C。NODE_A和NODE_B的数据正在到达NODE_C,我还希望NODE-A和NODE-B相互通信。如何使NODE_A和NODE_B相互交谈?谢谢

在NODE_A上编辑udp_client.c示例如下其中NODE_B:fd00::abcd:aaa:bbbb的地址,NODE_B:fd00:dddd:aaa:bbbbNODE_C:fd00::1

uip_ipaddr_t NODE_B;
uip_ipaddr_t NODE_C;
uip_ip6addr(&NODE_C, 0xfd00, 0, 0, 0, 0, 0, 0, 1);
uip_ip6addr(&NODE_B, 0xfd00, 0, 0, 0, 0, 0xabcd, 0xaaaa, 0xbbbb);
/* new connection with remote host */
client_conn_NODE_B = udp_new(&NODE_C, UIP_HTONS(3000), NULL);
udp_bind(client_conn_NODE_B, UIP_HTONS(3001));
/* new connection with remote host */
client_conn_NODE_B = udp_new(&NODE_B, UIP_HTONS(3002), NULL);
udp_bind(client_conn_NODE_B, UIP_HTONS(3003));

在NODE_B 上

uip_ipaddr_t NODE_A;
uip_ipaddr_t NODE_C;
uip_ip6addr(&NODE_C, 0xfd00, 0, 0, 0, 0, 0, 0, 1);
uip_ip6addr(&NODE_A, 0xfd00, 0, 0, 0, 0, 0xdddd, 0xaaaa, 0xbbbb);
/* new connection with remote host */
client_conn_NODE_B = udp_new(&NODE_C, UIP_HTONS(3000), NULL);
udp_bind(client_conn_NODE_B, UIP_HTONS(3001));
/* new connection with remote host */
client_conn_NODE_B = udp_new(&NODE_B, UIP_HTONS(3003), NULL);
udp_bind(client_conn_NODE_B, UIP_HTONS(3002));

NODE_C是我的Linux板,我写了一个类似的测试代码

import socket, struct
UDP_LOCAL_IP = 'aaaa::1'
UDP_LOCAL_PORT = 5678
try:
socket_rx = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
socket_rx.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
socket_rx.bind((UDP_LOCAL_IP, UDP_LOCAL_PORT))
except Exception:
print "ERROR: Server Port Binding Failed"
print 'UDP server ready: %s'% UDP_LOCAL_PORT
print
while True:
data, addr = socket_rx.recvfrom(1024)
print "address : ", addr
print "received message: ", data
print "n"
socket_rx.sendto("Hello from serevrn", (UDP_REMOTE_IP, UDP_REMOTE_PORT))

最新更新