我正在尝试使用netcat发送广播消息.
我打开防火墙,发送这样的常规消息对我有用:
host: nc -l 192.168.1.121 12101
client: echo "hello" | nc 192.168.1.121 12100
Run Code Online (Sandbox Code Playgroud)
但我无法得到这样的东西.
host: nc -lu 0.0.0.0 12101
client: echo "hello" | nc -u 255.255.255.255 12100
Run Code Online (Sandbox Code Playgroud)
我使用正确的旗帜吗?注意,主机在Mac上,而客户端在Linux上.你能给我一个用于广播消息的例子吗?
谢谢!
Rob*_*oun 20
netcat的GNU版本可能会被破坏.(无论如何,我无法在0.7.1下工作.)请参阅http://sourceforge.net/p/netcat/bugs/8/
我已经让socat上班了.下面的代码将UDP广播到端口24000.
socat - UDP-DATAGRAM:255.255.255.255:24000,broadcast
Run Code Online (Sandbox Code Playgroud)
(在socat-world中" - "表示"stdin".)
你不是说要播放,这是使用/ 的-b
选项完成的.nc
netcat
nc -h 2>&1 | grep -- -b
-b allow broadcasts
Run Code Online (Sandbox Code Playgroud)
一个在 Ubuntu 上运行的简单示例。所有信息都在其他答案中,但我必须将其拼凑在一起,所以我想分享结果。
服务器
nc -luk 12101
Run Code Online (Sandbox Code Playgroud)
客户
echo -n "test data" | nc -u -b 255.255.255.255 12101
Run Code Online (Sandbox Code Playgroud)
客户端将挂起,直到您执行 Ctrl-C
小智 3
抱歉,如果我假设错误,但您提到您的防火墙设置正确,所以我猜测主机和客户端不在同一子网上???
如果是这种情况,并且该防火墙还充当路由器(或者如果数据包必须通过路由器),那么它将处理该数据包,但不会将其转发出其他接口。如果您希望发生这种情况,那么您需要发送定向广播。例如; 对于子网 192.168.1.0/24,定向广播将为 192.168.1.255,即子网中的最后一个 IP。然后,假设防火墙有一条到 192.168.1.0/24 的路由,并且它被设置为转发定向广播,则会将该广播转发到目的地或下一跳。配置您的设备以转发定向广播...您需要参考其文档。对于 Cisco IOS,您可以在界面下输入“ip direct-broadcast”。
255.255.255.255 是一个有限的广播,无论如何都不会通过您的路由器,它仅用于其所在的第 2 层链路。
至于netcat是如何设置的:
-l 0.0.0.0 12101,告诉 netcat 在所有已启动且已分配 IP 地址的接口上侦听端口 12101。不需要 -u,因为它告诉 netcat 监听 unix 域套接字,google IPC :)(这是您的方案不起作用的最大原因。)
下面的代码应该可以通过 netcat 将广播转发到另一个网络:
服务器:nc -l 0.0.0.0 12101 主持人:回显“你好” | 数控192.168.1.255 12101
希望有所帮助,如果内容冗长或偏离您正在寻找的内容,我们深表歉意:)
归档时间: |
|
查看次数: |
42165 次 |
最近记录: |