我正在将 macOS 与 gnu netcat 一起使用。我想了解如何使用 netcat 广播消息。
我在netcat
听 4555
netcat -l -p 4555 192.168.0.101
但是当我尝试发送广播消息时
netcat 192.168.0.255 4555
但我一直在犯错误
Error: Couldn't create connection (err=-5): Permission denied
我收到以下错误
Error: Couldn't create connection (err=-5): Permission denied
下面的帖子说可以这样做,netcat-traditional
但我正在运行 GNU netcat 在这里很重要。
试图达到要点:
TCP 不适用于广播。
您根本无法使用 TCP 连接到广播 IP 地址。netcat默认使用 TCP,除非被告知使用 UDP,这样的尝试会出错。
UDP 广播需要设置一个标志,但 GNU netcat 不处理它。
这就是 BSD 套接字 API 及其扩展通过
setsockopt(2)
. 为了能够将数据包发送到广播 IPv4 地址(对于支持广播的协议),SO_BROADCAST
这是强制性的。否则这将触发错误。GNU netcat 源不包含任何SO_BROADCAST
字符串。因此,GNU netcat 不可能发送广播。您必须切换到其他工具。netcat的其他变体(周围有多个)或使用
socat
具有更多功能的替代。这是一个关于使用socat
with (multicast and) broadcast的链接。它确实可以处理带有套接字的两侧,例如(显然)GNU netcat 的隧道模式。