PacketConn.ReadFrom()
可以提供包含输入接口ifIndex的ControlMessage
。
UDPConn.ReadFromUDP()
返回net.UDPAddr
,其中包含数据报的源套接字地址(srcIP + srcPort)。
但是,如何获取BOTH信息:输入接口ifIndex AND 远程套接字地址(srcIP + srcPort)?
编辑:我填写了一个问题:https://github.com/golang/go/issues/14362
答案 0 :(得分:1)
当底层套接字是UDP时,.ReadFrom()返回一个* net.UDPAddr对象作为net.Addr结果。
因此可以使用.ReadFrom()获取输入接口(如ifIndex)和远程套接字完整端点地址(net.UDPAddr中的IPaddr +端口)。
// c is *ipv4.PacketConn
n, cm, srcAddr, err := c.ReadFrom(buf)
switch srcAddr.(type) {
case *net.UDPAddr:
udpAddr := srcAddr.(*net.UDPAddr)
}