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

Go net.DialUDP 自动选择环回接口

Go net.DialUDP 自动选择环回接口

Go
慕侠2389804 2022-05-18 14:32:57
我需要从主机上的 eth0 向自身发送一些 UDP 数据包,也在 eth0 上。我有一些可用的 Go 代码,但它似乎使用的是环回接口而不是 eth0 预期的那样。package mainimport (    "net")func main() {    ip := net.ParseIP("192.168.1.158")    src := net.UDPAddr{IP: ip, Port: 8888,}    dest := net.UDPAddr{IP: ip, Port: 88}    conn, _ := net.DialUDP("udp", &src, &dest)    conn.Write([]byte("hi"))}192.168.1.158 是我机器上接口的主要和唯一 IP 地址。运行以下命令会显示流量:sudo tcpdump udp -v -i lo但是,我希望流量来自/来自具有我定义的 IP 地址的系统接口。我在这里错过了一步吗?我也尝试过这种略有不同的方法,但结果相同:src, _ := net.ResolveUDPAddr("udp", "192.168.1.158:8888")dest, _ := net.ResolveUDPAddr("udp", "192.168.1.158:88")
查看完整描述

1 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

但是,我希望流量来自/来自具有我定义的 IP 地址的系统接口。

这只是错误的期望,与 Go 无关。

只需尝试ping 192.168.1.158检查tcpdump -i lo -n icmp数据tcpdump -i eth0 -n icmp实际传输的位置即可。您将看到数据包在lo接口上传输。类似的 aip route get 192.168.1.158将向您显示到您的本地地址的路由通过该lo接口。


查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 325 浏览
慕课专栏
更多

添加回答

举报

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