如何读取在 Golang 中收到的 UDP 数据报的输入接口和远程套接字地址?

PacketConn.ReadFrom()可以提供ControlMessage包含输入接口的ifIndex。

UDPConn.ReadFromUDP()返回net.UDPAddr数据报的源套接字地址(srcIP+srcPort)。

但是,如何获取两个信息:输入接口 ifIndex AND远程套接字地址 (srcIP+srcPort) ?

编辑:我已经解决了一个问题:https : //github.com/golang/go/issues/14362


慕村9548890
浏览 293回答 1
1回答

侃侃尔雅

当底层套接字是 UDP 时,.ReadFrom() 返回一个 *net.UDPAddr 对象作为 net.Addr 结果。因此,可以使用 .ReadFrom() 获取输入接口(如 ifIndex)和远程套接字完整端点地址(net.UDPAddr 中的 IPaddr+端口)。// c is *ipv4.PacketConnn, cm, srcAddr, err := c.ReadFrom(buf)switch srcAddr.(type) {    case *net.UDPAddr:        udpAddr := srcAddr.(*net.UDPAddr)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go