为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕村9548890 2021-12-13 18:43:48
PacketConn.ReadFrom()可以提供ControlMessage包含输入接口的ifIndex。UDPConn.ReadFromUDP()返回net.UDPAddr数据报的源套接字地址(srcIP+srcPort)。但是,如何获取两个信息:输入接口 ifIndex AND远程套接字地址 (srcIP+srcPort) ?编辑:我已经解决了一个问题:https : //github.com/golang/go/issues/14362
查看完整描述

1 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

当底层套接字是 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)

}


查看完整回答
反对 回复 2021-12-13
  • 1 回答
  • 0 关注
  • 292 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信