You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS 7下创建可根据客户端请求返回响应的Socket问题咨询

解决CentOS 7下Socket客户端请求无响应的问题

你的当前命令只是把nc的日志和客户端请求内容写入文件,但没有处理响应逻辑,所以客户端发送请求后收不到任何回复。下面给你两种实现客户端请求-响应的方案:

方案一:快速实现固定/简单响应

直接用nc的-c参数调用一段shell命令,实现接收请求后立即回复,同时记录请求到文件:

nc -lvk 88.109.110.161 100 -c 'while read line; do 
    # 把请求带时间戳写入日志文件
    echo "$(date +'%Y-%m-%d %H:%M:%S') - Client sent: $line" >> port100.txt
    # 给客户端返回响应
    echo "Server received your message: $line"
done'

测试一下:客户端执行echo "Hello" | nc 88.109.110.161 100,应该会立刻收到Server received your message: Hello的回复,同时port100.txt里会有带时间戳的请求记录。

方案二:根据不同请求返回自定义响应

如果需要根据客户端的不同请求返回不同内容,可以写一个单独的shell脚本处理逻辑:

  1. 创建server_response.sh脚本:
#!/bin/bash
while read -r client_request; do
    # 记录请求到日志
    echo "$(date +'%Y-%m-%d %H:%M:%S') - Request: $client_request" >> port100.txt
    
    # 根据请求内容分支处理响应
    case "$client_request" in
        "Hello")
            echo "Hi! Welcome to the CentOS server."
            ;;
        "GetTime")
            echo "Current server time: $(date +'%H:%M:%S')"
            ;;
        *)
            echo "Sorry, I don't understand your request: $client_request"
            ;;
    esac
done
  1. 给脚本添加执行权限:
chmod +x server_response.sh
  1. 启动带响应逻辑的Socket服务:
nc -lvk 88.109.110.161 100 -c ./server_response.sh

测试时,客户端发送echo "GetTime" | nc 88.109.110.161 100,就能收到服务器当前时间的回复啦。

额外注意事项

  • 确保CentOS 7的防火墙已经开放100端口:
firewall-cmd --add-port=100/tcp --permanent
firewall-cmd --reload
  • 如果遇到连接问题,检查SELinux状态:可以临时关闭测试setenforce 0,如果正常,再添加SELinux端口规则。

内容的提问来源于stack exchange,提问作者Martin Ocando Corleone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:22:26