icmp.ListenPacket(“ udp4”,“ 127.0.0.1”)返回权限被拒绝

问题描述 投票:1回答:1

https://godoc.org/golang.org/x/net/icmp#ListenPacket文档中,它提到:

对于面向非特权数据报的ICMP端点,网络必须是“ udp4”或“ udp6”。端点允许读取,写入一些有限的ICMP消息,例如回显请求和回显应答。目前只达尔文和Linux支持此功能。

但是当我尝试此代码时:

icmp.ListenPacket("udp4", "127.0.0.1")

socket: permission denied错误返回。我的代码有问题吗?

我使用Ubuntu 18.04

linux go icmp
1个回答
0
投票

您需要在进程上设置CAP_NET_RAW(或root)。为此,

  • 您可以使用sudo以root身份运行
  • 或者您可以授予二进制文件所需的功能sudo setcap cap_net_raw+p /path/to/you/program
© www.soinside.com 2019 - 2024. All rights reserved.