【问题标题】:Send response based on client request根据客户端请求发送响应
【发布时间】:2018-10-12 13:49:13
【问题描述】:

我正在尝试创建一个套接字,客户端根据他们的请求接收响应,但我不知道如何在 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。我该怎么做?

【问题讨论】:

    标签: bash unix networking tcp centos


    【解决方案1】:

    好的,我现在在 macOS 上,所以 ncCentOS 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

    【讨论】:

      猜你喜欢
      • 2015-11-29
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      • 1970-01-01
      • 2014-02-07
      • 1970-01-01
      相关资源
      最近更新 更多