문자열에 명령을 지정하지 않고 에코 서버를 만들고 싶습니다. 모든 명령이 파이프를 통해 연결되기를 원합니다.
요청이 응답 생성 로직으로 전달되기 전에 응답이 반환되기 때문에 이는 불가능해 보입니다. ncat을 사용할 수 있는 것 같지만 이것도 피하고 싶습니다.
FIFO 대기열을 사용하면 가능할 수도 있다고 생각하지만 작동시키는 데 문제가 있습니다.
"내가 뭘 하려는 거지?" 부분
이러한 한계를 정당화하려는 노력은 제한된 언어 능력으로 인해 어려운 일이었습니다. 그러나 나의 궁극적인 목표는 xinetd의 편리함을 사용하여(그러나 데몬 없이) 모든 애플리케이션 로직에 대한 기본 스크립트를 유지하는 것입니다. 이러한 기본 스크립트에는 다음과 같이 수십 개의 줄이 있을 수 있습니다.
nc -l 8080 | get_person_name.sh | create_insert_statement.sh | sqlplus
nc -l 8081 | get_person_id.sh | create_select_statement.sh | sqlplus
두 번째는 클라이언트에 출력을 반환하지 못하기 때문에 작동하지 않습니다. 따라서 netcat을 사용하여 에코 서버를 구현하는 문제를 줄였습니다. 이러한 명령은 모두 동적이며 추가 수준의 간접 참조를 처리하고 싶지 않기 때문에 문자열을 사용하고 싶지 않습니다(내 텍스트 편집기의 구문 강조 표시는 처음에는 훨씬 덜 유용합니다). 하지만 여기에는 문서 솔루션이 열려 있습니다.
답변1
이것이 내가 원하는거야:
섬기는 사람:
mkfifo fifo
cat fifo | nc -k -l 4458 -v | cat > fifo
고객:
echo "45" | nc localhost 4458