在CAPL中我们使用UdpOpen()和TcpOpen()两个函数创建Socket套接字,传入IP地址和Port口绑定IP地址和Port口,作为发送报文时的源IP地址和源Port口。
如果对源IP地址和源Port口没有要求,不需要绑定IP地址和Port口,可以在调用UdpOpen()和TcpOpen()时传入0,如此套接字绑定的IP地址和Port口将随机。
on key 'a'
{
dword udpsock;
udpsock = udpOpen(0, 0);//随机
udpSendTo(udpsock, ipGetAddressAsNumber("172.16.20.52"), 52, "Hello", 6);
}
网络层会根据目的IP地址在路由表中查找符合的路由Entry,选择路由条目上的网络接口的IP地址作为源IP地址。
源Port口使用未被打开的随机端口。
如果在调用UdpOpen()时绑定IP地址,而Port口随机呢?
on key 'a'
{
dword udpsock;
udpsock = udpOpen(ipGetAddressAsNumber("172.16.10.17"), 0);//随机
udpSendTo(udpsock, ipGetAddressAsNumber("172.16.20.52"), 52, "Hello", 6);
}