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

问题描述 投票:39回答:5

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

我到目前为止最好的是

nc -l -p 2000 -c 'xargs -n1 echo'

但它只允许一个连接。

bash tcp netcat
5个回答
42
投票

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

ncat -l 2000 -k -c 'xargs -n1 echo'

ncat可在http://nmap.org/ncat/获得。

附:原版Hobbit的netcat(nc)不支持-c标志。

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


22
投票

这里有些例子。 ncat simple services

TCP echo服务器

ncat -l 2000 --keep-open --exec "/bin/cat"

UDP echo服务器

ncat -l 2000 --keep-open --udp --exec "/bin/cat"

9
投票

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

socat TCP4-LISTEN:2000,fork EXEC:cat

fork是必要的,因此可以接受多个连接。将reuseaddr添加到TCP4-LISTEN可能很方便。


1
投票

qazxsw poi解决方案预先安装在Ubuntu中

预装在Ubuntu 16.04中的netcat来自netcat,并且没有netcat-openbsd选项,但手册提供了一个解决方案:

-c

客户端示例:

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

TODO:如何修改输入字符串值?以下内容未返回任何回复:

echo abc | netcat localhost 8000

然而,远程shell示例有效:

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

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


0
投票

关于什么...

cat fifo | /bin/sh -i 2>&1 | netcat -l -k localhost 8000 > fifo
© www.soinside.com 2019 - 2024. All rights reserved.