go - 如何通过 Go 中的特定网络接口发送 ICMP 消息?
问题描述
我是 Go 新手。我正在尝试编写一个8.8.8.8
通过特定网络接口(例如eth0
)执行 ping 操作的程序。使用ping
Linux 上的命令,您可以指定-I
标志以使 ICMP 消息通过特定网络接口发送。
ping -I enp4s0 8.8.8.8
我怎样才能用 Go 做到这一点?我看过几个包 - github.com/sparrc/go-ping
、github.com/tatsushid/go-fastping
和golang.org/x/net/icmp
; 他们似乎都没有让我设置界面。
解决方案
您可以使用net.DialTCP
,或者net.DialIP
如果每个接口都有一个不同的 IP 地址,它们将使用该接口返回给您一个连接。然后,您可以自己手动发送 ping。
您还可以使用exec
包https://golang.org/pkg/os/exec/ping
在网络接口上发送。您可以使用exec
与 shell 交互,只需将输出通过管道传输回缓冲区并读取它。
推荐阅读
- c - 在程序中找不到将从数组中删除重复数字的错误
- python - Pandas:如何从预先存在的列下的列表中插入新数据?
- java - Graphics2D drawString 函数未绘制
- php - Laravel 保留 chmod 存储文件夹
- react-native - React Native:登录首页后如何重置登录页面
- angular - 根据 id 访问对象属性
- qt - 从不同于包含它的文件访问 QML Stackview
- python - 无法在本地机器上加载张量板
- javascript - 减去今天和明天的日期,得到第 365 天
- php - 我的核心 php 网站站点地图未在谷歌网站管理员中索引