其实不只是CANoe的网络节点,所有设备的应用程序如果要通过Socket套接字发送报文,在网络层都需要根据路由表里配置的路由条目选择发送路径。这个路由条目可以是静态配置,也可以是自动添加。
如果CANoe的网络节点添加一个网络接口,配置IP地址和子网掩码:
说明此网络节点在172.16.10.0/24网段,所有目的IP地址是此网段的报文的下一跳地址就是局域网内的地址,也可以说是"在链路上"。
所以在路由表中将自动添加一条路由Entry:
目的地网络 | 子网掩码 | 下一跳地址 | 接口 | Metric |
---|---|---|---|---|
172.16.10.0 | 255.255.255.0 | 在链路上 | VLAN1.10 | 1 |
看看此网络节点上的应用程序给网段内的其他目标发送报文时,ARP请求寻址的下一跳主机是否是目标主机:
on key 'a'
{
dword udpsock;
udpsock = udpOpen(0, 0);//随机
ipBind(udpsock, 0, 0);
udpSendTo(udpsock, ipGetAddressAsNumber("172.16.10.52"), 52, "Hello", 6);
}
实现效果: