如何用Netcat只发送一个UDP数据包?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (109)

我希望在UDP数据包中只发送一个短值,但运行以下命令

echo -n "hello" | nc -4u localhost 8000

我可以看到服务器正在获得你好但是我必须按Ctrl+c键退出Netcat命令。

我怎么才能让它在发送后退出呢?你好?

对不起,由于噪音,我重新阅读了手册页,发现-q选择。

 echo -n "hello" | nc -4u -q1 localhost 8000

起作用(1秒后退出)。

由于某些原因,它不适用于-q0

提问于
用户回答回答于

我没有找到-q1我的Netcat的选项。相反,我使用了-w1选择。下面是我向任何主机和端口发送UDP数据包的bash脚本:

#!/bin/bash

def_host=localhost
def_port=43211

HOST=${2:-$def_host}
PORT=${3:-$def_port}

echo -n "$1" | nc -4u -w1 $HOST $PORT
用户回答回答于

如果正在使用bash,则最好编写

echo -n "hello" >/dev/udp/localhost/8000

并避免所有的特质和不相容的Netcat。

这也可以发送到其他主机,例如:

echo -n "hello" >/dev/udp/remotehost/8000

这些不是文件系统上的“真实”设备,而是bash“特殊”设备。

扫码关注云+社区

领取腾讯云代金券