gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:16:03 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com