gpt4 book ai didi

go - 在golang中本地发送UDPv6

转载 作者:IT王子 更新时间:2023-10-29 02:32:47 24 4
gpt4 key购买 nike

我需要发送一个 UDPv6 数据报,以便能够通过本地接收器(或通过 tcpdump)跟踪此消息。

daddr, err = net.ResolveUDPAddr("udp6", "[address]:port")
if err != nil {
return err
}

conn, err := net.DialUDP("udp6", nil, daddr)
if err != nil {
return err
}
defer conn.Close()

conn.Write(...)

与 IPv4 不同,此代码不适用于 IPv6。例如,当我尝试将数据报发送到多播地址时,例如到 [FF01::DB8:0:0]:5000,我得到 connect: invalid argument。当我尝试将它发送到 [fe80::20c:29ff:fee1:d66]:5000(我的 IPv6 地址根据 ifconfig)时,也会发生同样的情况。

最佳答案

在这两种情况下(链路本地和接口(interface)本地多播)您都忘记了指定作用域 ID。如果没有这个,就不可能确定要使用哪个接口(interface),并且您会从操作系统中得到一个 Invalid argument 错误。

net.UDPAddr使用 Zone 字段来存储范围 ID。您需要通过明确设置 Zone 或使用 percent-suffix notation 来确保提供了一个。 .

关于go - 在golang中本地发送UDPv6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42175773/

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