背景是这样: 主机与客户机采用 udp 连接, 客户机的 ip 随时可能变更, 所以主机保存了客户机发送过来的 mac 地址作为客户机标识.
当主机下发报文时, 需要先获取客户机实时的 ip 才能发送过去.
那么问题就来啦:
我发现云服务器 arp -a
的输出是
_gateway (192.168.0.1) at fa:16:3e:54:ba:e2 [ether] on eth0
? (192.168.0.253) at fa:16:3e:9f:a3:f3 [ether] on eth0
? (192.168.0.254) at fa:16:3e:36:9b:65 [ether] on eth0
? (192.168.0.66) at fa:16:3e:56:e4:3d [ether] on eth0
? (192.168.0.21) at <incomplete> on eth0
似乎根本就不会记录外网 ip???
有没巨佬能科普一下, 给个办法或者思路, 我在网络通信方面着实菜鸡, 提前感谢!
结贴, 谢谢各位
我就是个瓜皮
1
xenme 2019-01-09 13:41:04 +08:00
难道不是 ip+port 来通信的?
客户端哪个 IP 和端口发过来的,直接哪个地址和端口回就好了么。 |
2
singerll 2019-01-09 13:43:58 +08:00 via Android
客户机是公网 ip ?
|
3
mhycy 2019-01-09 13:45:06 +08:00
MAC 地址是二层交换所用,上层通讯只需要关心 IP 地址,
UDP 经过 NAT 以后端口有效时间不定,即便加了心跳也不一定长期有效 务必注意开发时候的断流处理 |