socat이 리스너 연결을 수신할 때까지 대상 연결을 열지 못하게 하는 방법이 있습니까?

socat이 리스너 연결을 수신할 때까지 대상 연결을 열지 못하게 하는 방법이 있습니까?

간헐적으로 증가 및 감소하는 대상(클라우드 마이크로서비스 환경)에 대해 socat을 서버로 실행하고 싶습니다.

나는 socat이 청취하고 청취자 연결이 이루어지면 포트를 열기를 원합니다. (소캣 서버)

내 질문은 다음과 같습니다socat이 리스너 연결을 수신할 때까지 대상 연결을 열지 못하게 하는 방법이 있습니까?

답변1

귀하의 질문을 이해한다면 이것이 기본값입니다. 첫 번째 소켓은 청취 중에 열리고 차단됩니다. 두 번째로 지정된 연결은 연결이 설정된 경우에만 시도됩니다. 테스트할 수 있습니다. 예를 들어, 포트 60127에서 수신 대기하고 포트 60128에 연결하는 셸에서:

$ socat tcp-l:60127,reuseaddr tcp:localhost:60128

대기를 차단합니다. 다른 셸에서 연결해 보세요.

$ telnet localhost 60127
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

실패하고 원래 명령도 마찬가지입니다.

socat[30293] E connect(3, AF=2 127.0.0.1:60128, 16): Connection refused

그러나 첫 번째 socat를 반복하는 경우 포트 60128에 다른 socat를 추가하십시오.

$ socat tcp-l:60128,reuseaddr -

그러면 텔넷이 작동할 것입니다. 따라서 분명히 첫 번째 socat는 필요할 때 두 번째 명명된 연결을 시도하지 않을 것입니다.

관련 정보