
我正在使用 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 来做到这一点,这在这里很重要。
答案1
试图抓住要点:
TCP 不适用于广播。
您根本无法使用 TCP 连接到广播 IP 地址。网猫除非被告知使用 UDP,否则默认使用 TCP,这样的尝试会出错。
UDP 广播需要设置一个标志,但 GNU netcat 不处理它。
这就是 BSD 套接字 API 及其扩展通过
setsockopt(2)
.SO_BROADCAST
必须能够将数据包发送到广播 IPv4 地址(对于支持广播的协议) 。否则这将触发错误。这GNU netcat 源代码不要在任何地方包含 stringSO_BROADCAST
。
因此,GNU netcat 不可能发送广播。您必须切换到其他工具。或者是其他变体网猫(周围有多个)或使用socat
它有更多的功能。这是一个关于socat
与(多播和)广播一起使用。它确实可以处理两侧带有套接字的情况,就像(显然)GNU netcat 的隧道模式一样。