我正在尝试创建一个套接字,客户端根据他们的请求收到响应,但我无法弄清楚如何在CentOS 7上实现这一点。
到目前为止,我已在端口100上打开套接字并将客户端请求保存在文件中:
#!/bin/sh
nc -lvk 88.109.110.161 100 > port100.txt 2>&1
作为客户,我发送请求:
echo "Hello" | nc 88.109.110.161 100
文件填充为:
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Listening on 88.109.110.161:100
Ncat: Connection from 88.109.110.161.
Ncat: Connection from 88.109.110.161:47578.
Hello
我希望客户端根据查询接收响应,如果请求是Hello,则接收World,如果World则接收Hello。我怎么能这样做?
答案 0 :(得分:1)
好的,我现在在macOS
,nc
在CentOS 7
上可能略有不同,但无论如何,下面的示例应该会有所帮助。
如果要更改传递给服务器脚本的文本,然后打印,请尝试在将其重定向到文件之前进行修改。使用管道在while
循环中处理它,例如:
#!/bin/sh
nc -lvk 127.0.0.1 8080 | while read in
do
echo '------'
if [[ $in == 'Hello' ]]; then
echo 'World'
elif [[ $in == 'World' ]]; then
echo 'Hello'
else
echo "$in"
fi
done | tee out.txt
一些客户要求测试:
echo 'test' | nc 127.0.0.1 8080
echo 'World' | nc 127.0.0.1 8080
echo 'Hello' | nc 127.0.0.1 8080
示例输出:
------
test
------
Hello
------
World
^C
感谢tee
输出也位于out.txt
。为简单起见,我刚刚重定向stdout
。