1

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

4

1 回答 1

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了。

于 2018-05-02T19:31:41.533 回答