netcat接続を開いたままにする方法は?

netcat接続を開いたままにする方法は?

2つのファイルがあり、必要なすべてのデータがサーバー上にあり、次のコマンドを使用してクライアントに送信しますclient.shserver.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

関連情報