如何使用Bash制作Echo服务器?

Ros*_*oto 40 bash tcp netcat

如何使用nc,echo,xargs等工具编写echo服务器bash脚本,这些工具能够同时处理来自多个客户端的请求,每个客户端都具有持久连接?

我到目前为止最好的是

nc -l -p 2000 -c 'xargs -n1 echo'
Run Code Online (Sandbox Code Playgroud)

但它只允许一个连接.

Dav*_*sta 43

如果您使用ncat而不是nc,您的命令行可以正常使用多个连接但(如您所指出的)没有-p.

ncat -l 2000 -k -c 'xargs -n1 echo'
Run Code Online (Sandbox Code Playgroud)

ncat可从http://nmap.org/ncat/获得.

PS与原始的Hobbit的netcat(nc)-c标志不受支持.

更新:现在需要-k( - keep-open)来处理多个连接.

  • xargs -n1 echo通过空格将行分开,但是xargs -l1 echo使行保持完整。 (2认同)

dou*_*uyw 23

这里有些例子.ncat简单的服务

TCP echo服务器

ncat -l 2000 --keep-open --exec "/bin/cat"
Run Code Online (Sandbox Code Playgroud)

UDP echo服务器

ncat -l 2000 --keep-open --udp --exec "/bin/cat"
Run Code Online (Sandbox Code Playgroud)


Cae*_*sar 10

如果ncat不是一个选项,socat也会工作:

socat TCP4-LISTEN:2000,fork EXEC:cat
Run Code Online (Sandbox Code Playgroud)

fork是必要的,因此可以接受多个连接.添加reuseaddrTCP4-LISTEN可能很方便.