断続的に増減するターゲット(クラウドマイクロサービス環境)に対してsocatをサーバーとして実行したいと思います。
私はsocatがリスニングし、リスナー接続が行われたらポートを開くことを望みます。 (ソキャットサーバー)
私の質問は次のとおりですsocatがリスナー接続を受信するまでターゲット接続を開くのを防ぐ方法はありますか?
答え1
あなたの質問を理解するならば、これはデフォルトです。最初のソケットは、リスニング中に開いてブロックされます。 2 番目に指定された接続は、接続が確立された場合にのみ試行されます。テストできます。たとえば、ポート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 -
これでTelnetが機能します。したがって、明らかに最初のsocatは、必要に応じて2番目の名前付き接続を試みません。