在golang本地发送UDPv6
我需要发送一个UDPv6数据报,以便本地接收器(或通过在golang本地发送UDPv6,go,udp,ipv6,Go,Udp,Ipv6,我需要发送一个UDPv6数据报,以便本地接收器(或通过tcpdump)跟踪此消息 与IPv4不同,此代码不适用于IPv6。例如,当我尝试将数据报发送到多播地址时,例如发送到[FF01::DB8:0:0]:5000,我会得到connect:invalid参数。当我尝试将其发送到[fe80::20c:29ff:fee1:d66]:5000(我的IPv6地址根据ifconfig)时也会发生同样的情况。在这两种情况下(链接本地和接口本地多播),您都忘记了指定作用域ID。如果没有这个,就无法确定要使用哪个
tcpdump
)跟踪此消息
与IPv4不同,此代码不适用于IPv6。例如,当我尝试将数据报发送到多播地址时,例如发送到[FF01::DB8:0:0]:5000,我会得到connect:invalid参数。当我尝试将其发送到[fe80::20c:29ff:fee1:d66]:5000(我的IPv6地址根据ifconfig
)时也会发生同样的情况。在这两种情况下(链接本地和接口本地多播),您都忘记了指定作用域ID。如果没有这个,就无法确定要使用哪个接口,操作系统会出现无效参数
错误
使用区域
字段存储作用域ID。您需要通过显式设置区域
或使用.确保已提供一个。在这两种情况下(链接本地和接口本地多播),您都忘记了指定作用域ID。如果没有此项,则无法确定要使用的接口,操作系统会出现无效参数
错误
使用区域
字段存储作用域ID。您需要通过显式设置区域
或使用。谢谢!对于我的卡地址,我得到了写:连接被拒绝
,对于一个(链接本地)多播地址,它可以正常工作。谢谢!对于我的卡地址,我得到了写:连接被拒绝
,对于(链接本地)多播地址,它按预期工作。
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(...)