根据客户端请求发送响应

时间:2018-05-02 12:37:56

标签: bash unix networking tcp centos

我正在尝试创建一个套接字,客户端根据他们的请求收到响应,但我无法弄清楚如何在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。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

好的,我现在在macOSncCentOS 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