PacketConn.ReadFrom()
可以为输入接口(interface)提供包含 ifIndex 的 ControlMessage
。
UDPConn.ReadFromUDP()
返回带有数据报的源套接字地址 (srcIP+srcPort) 的 net.UDPAddr
。
但是,如何同时获取两个信息:输入接口(interface) ifIndex AND 远程套接字地址 (srcIP+srcPort)?
编辑:我已经填写了一个问题:https://github.com/golang/go/issues/14362
最佳答案
当底层套接字是 UDP 时,.ReadFrom() 返回一个 *net.UDPAddr 对象作为 net.Addr 结果。
因此 .ReadFrom() 可用于获取输入接口(interface)(如 ifIndex)和远程套接字完整端点地址(IPaddr+net.UDPAddr 中的端口)。
// c is *ipv4.PacketConn
n, cm, srcAddr, err := c.ReadFrom(buf)
switch srcAddr.(type) {
case *net.UDPAddr:
udpAddr := srcAddr.(*net.UDPAddr)
}
关于sockets - 如何读取在 Golang 中接收到的 UDP 数据报的输入接口(interface)和远程套接字地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35442824/