如何保持 netcat 连接打开?

如何保持 netcat 连接打开?

我有两个文件,client.sh并且server.sh.所有必要的数据都在服务器上,使用以下命令将其发送到客户端网猫。客户端只需获取这些数据并将其显示给最终用户。问题是,当我尝试从服务器向客户端显示对话框加载屏幕时:

服务器.sh

# CLIENT PORT: 8765
# SERVER PORT: 5678

while :
do
    touch registered_users data

    nc -vv -l -p 5678 > data

    case `cat data` in
        "SPLASH_SCREEN")
            for ((i=0;i<100;i++))
            do
                echo $i
            done | dialog --title 'Loading...' --gauge 'Welcome!' 8 40 0 > /dev/tcp/127.0.0.1/8765
        ;;
    esac
done

客户端.sh

# CLIENT PORT: 8765
# SERVER PORT: 5678

echo "SPLASH_SCREEN" > /dev/tcp/127.0.0.1/5678

while :
do
    nc -l -p 8765 > server_response
    cat server_response
done

答案1

解决了!只需使用 -k 选项

 -k    Forces nc to stay listening for another connection after its current
       connection is completed.  It is an error to use this option without the
       -l option.

编辑:这个答案假设您正在使用openbsd-netcat某些版本,例如gnu-netcat具有减少的功能集,因此-k可能不存在某些标志,包名称可能会根据您的发行版而有所不同

相关内容