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

관련 정보