与netcat或socat回声服务器

我想要一个UDP回应服务器来获取数据包,并确切地回复它收到的。 我怎样才能简单地使用netcatsocat做到这一点? 它应该永远活着,处理来自多个主机的数据包。

    另一种类似netcat的工具是nmap版本, ncat ,它有很多内置的东西来简化这样的事情。 这将工作:

     ncat -e /bin/cat -k -u -l 1235 

    -e表示它执行/ bin / cat(回显你input的内容)
    -k表示保持活动状态,每次连接后都会继续收听
    -u表示udp
    -1235表示它监听端口1235

    我使用socat -v PIPE udp-recvfrom:5553,fork为客户端运行服务器和socat - udp:localhost:5553 。 这是一个很大的帮助!

    你也可以使用socat(而不是netcat)作为echo服务器和netcat作为客户端。

    Socat回声服务器(侦听TCP端口1234):

     socat -v tcp-l:1234,fork exec:'/bin/cat' 

    Netcat客户端(连接到TCP端口1234上的serverip):

     nc serverip 1234 

    您可以编写一个C程序, 分叉 nc -u -l -p 4321 ,然后使用dup(2)连接:

    • nc标准input与父母的标准输出
    • nc stdout与父级的stdin

    然后在一个无限循环中,父进程从stdin中读取,并在stdout中写入父进程读的任何内容。

    如果您正在Windows上运行,并使用类似cygwin的unix环境,则netcat migth不会提供-e参数。 这对我来说工作得很好。

    http://bansky.net/echotool/

    在Ubunutu预装netcat解决scheme

    预装在Ubuntu 16.04中的netcat-openbsd来自netcat-openbsd ,没有-c选项,但是手册给出了一个解决scheme:

     sudo mknod -m 777 fifo p cat fifo | netcat -l -k localhost 8000 > fifo 

    然后客户端示例:

     echo abc | netcat localhost 8000 

    TODO:如何修改input的string值? 以下不返回任何答复:

     cat fifo | tr 'a' 'b' | netcat -l -k localhost 8000 > fifo 

    远程shell例子工作:

     cat fifo | /bin/sh -i 2>&1 | netcat -l -k localhost 8000 > fifo 

    但是我不知道如何处理并发请求。