AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 773110
Accepted
Alex Flint
Alex Flint
Asked: 2016-04-27 12:51:24 +0800 CST2016-04-27 12:51:24 +0800 CST 2016-04-27 12:51:24 +0800 CST

让 netcat 监听多个 UDP 数据包

  • 772

如果我像这样运行一个简单的 UDP 侦听器:

nc -l -u -p 1234

然后我似乎只得到了第一个入站 UDP 数据包。例如,如果我运行:

$ echo abc | nc -u localhost 1234
  ["abc" appears in output of server as expected]

$ echo abc | nc -u localhost 1234
read(net): Connection refused
netcat
  • 5 5 个回答
  • 23134 Views

5 个回答

  • Voted
  1. Best Answer
    ekim
    2017-02-07T13:58:49+08:002017-02-07T13:58:49+08:00

    使用零 (0) 超时

    “服务器”:

    nc -kluvw 0 localhost 9000
    

    “客户”:

    echo -e "all"     | nc -vuw 0 localhost 9000
    echo -e "the"     | nc -vuw 0 localhost 9000
    echo -e "udp"     | nc -vuw 0 localhost 9000
    echo -e "packets" | nc -vuw 0 localhost 9000
    

    结果:

    Connection from 127.0.0.1 port 9000 [udp/*] accepted
    all
    Connection from 127.0.0.1 port 9000 [udp/*] accepted
    the
    Connection from 127.0.0.1 port 9000 [udp/*] accepted
    udp
    Connection from 127.0.0.1 port 9000 [udp/*] accepted
    packets
    

    测试:

    uname -a
    Linux ubuntu 3.2.0-23-generic-pae #36-Ubuntu SMP Tue Apr 10 22:19:09 UTC 2012 i686 i686 i386 GNU/Linux
    
    • 11
  2. torchhound
    2016-04-27T14:15:18+08:002016-04-27T14:15:18+08:00

    我找到了一个可以帮助你的链接:netcat:UDP 的奇怪行为——只接收发送的第一个数据包。

    在这个阶段,我不确定该怎么做,但 Nathan 指出,如果我在客户端和服务器上使用超时,那么就可以发送多个 UDP 数据包。

    我重新启动了 netcat 服务器,但这次有 1 秒的超时:

    $ nc -kluvw 1 localhost 9000
    

    然后开始从 netcat 客户端发送 UDP 数据包,超时时间为 1 秒:

     $ echo -e "all" | nc -vvuw 1 localhost 9000
     Connection to localhost 9000 port [udp/cslistener] succeeded!
     $ echo -e "the" | nc -vvuw 1 localhost 9000
     Connection to localhost 9000 port [udp/cslistener] succeeded!
     $ echo -e "udp" | nc -vvuw 1 localhost 9000
     Connection to localhost 9000 port [udp/cslistener] succeeded!
     $ echo -e "packets" | nc -vvuw 1 localhost 9000
     Connection to localhost 9000 port [udp/cslistener] succeeded!
    

    netcat 服务器现在接收所有这些:

    $ nc -kluvw 1 localhost 9000
    XXXXall
    XXXXthe
    XXXXudp
    XXXXpackets
    

    这是一个有趣的问题,希望这能回答你的问题。

    • 0
  3. k3a
    2021-07-24T16:33:25+08:002021-07-24T16:33:25+08:00

    要监控 UDP 端口,您可以尝试

    netcat -lzu -p 9000
    
    # -z, --zero                 zero-I/O mode (used for scanning)
    

    这适用于我的 GNU netcat 0.7.1。

    • 0
  4. mivk
    2021-12-20T08:36:03+08:002021-12-20T08:36:03+08:00

    您需要选择一个端口,并始终从该端口发送。

    正如这里所解释的,在侦听 UDP 端口得到它的第一个数据包后,如果它来自同一个发送端口,它将只接受额外的输入。

    所以,给定一个发送端口、一个监听端口和一个监听主机:

    send_port=7777
    listen_port=8888
    host=127.0.0.1
    

    一个听众开始于:

    nc -lu -p $listen_port
    

    然后,发送者必须使用-p始终使用相同源端口的选项。这将起作用并在侦听器上打印所有 4 行:

    for c in {1..4}; do
      echo "line $c" | nc -u -w 0 -p $send_port $host $listen_port
    done
    

    另外,请注意不同版本的 netcat 对其选项有不同的规则:

    • 原始的 netcat(netcat-traditional在基于 Debian 的发行版中)不支持超时 0(-w 0),因此您需要-w 1改用。
    • Nmap ncat也不支持,但支持分数超时,例如-w 0.1
    • 在监听模式下,-p监听端口之前的监听端口仅在原始ncv.1.10 中需要。其他版本只是将最后一个参数作为监听端口。但也都接受它作为-p $listen_port。
    • 0
  5. KillerDAN
    2022-05-27T05:17:13+08:002022-05-27T05:17:13+08:00

    我目前得到:

    Ncat:版本 7.50 ( https://nmap.org/ncat ) Ncat:UDP 模式不支持 -k 或 --keep-open 选项,但 --exec 或 --sh-exec 除外。退出。

    • 0

相关问题

  • TCP 会话和 IP 更改

  • SSH 和端口转发 socks 代理

  • 大数据传输中的网络性能

  • 使用 telnet 或 netcat 发送带有附件的电子邮件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve