netcat을 사용하여 다음과 같은 간단한 서버를 실행합니다.
while true; do nc -l -p 2468 -e ./my_exe; done
이렇게하면 누구나 2468 포트에서 호스트에 연결하고 “my_exe”와 대화 할 수 있습니다.
불행히도, 공개 세션 중에 다른 누군가가 연결을 원하면 netcat이 다음 “while”루프까지 수신 대기하지 않기 때문에 “연결 거부”오류가 발생합니다.
netcat을 멀티 스레드 서버처럼 작동시키는 방법이 있습니까? 그렇지 않은 경우 이에 대한 해결 방법이 있습니까?
답변
작업에 잘못된 도구를 사용하고 있습니다 : ucspi-tcp 와 같은 것을 사용하십시오 . 특히 tcpserver :
tcpserver waits for incoming connections and, for each connection,
runs a program of your choice.
답변
사용중인 운영 체제는 언급하지 않았지만 쉘 명령 예제의 구문을 기반으로 Linux 또는 Unix라고 가정합니다.
시스템에서 xinetd (또는 그 이전 버전 inetd )를 실행중인 경우 해당 소프트웨어를 사용하여 선택한 포트에서 연결을 수신하고 실행 파일을 실행하여 응답 할 수 있습니다. xinetd / inetd를 사용하면 각각 별도의 실행 파일 인스턴스가 제공하는 여러 동시 연결을 허용 할 수 있습니다.
답변
다음과 같은 ‘&’를 사용하여 프로세스를 백그라운드로 설정 한 다음 (다음 루프로 넘어 가기 전에 리턴을 기다리지 않음) 다음과 같이 할 수 있습니다.
while true; do nc -l -p 2468 -e ./my_exe &; done