11

このコマンド (シリアル ポート リダイレクタ) は、TCP:11313 で単一の接続を受け入れます。

socat PTY,link=/dev/ttyV1,echo=0,raw,unlink-close=0 TCP-LISTEN:11313,forever,reuseaddr

ただし、接続が失われると、上記の socat プロセスが強制終了され、クライアントは接続できなくなります。

fork上記のコマンドの最後にオプションを追加することでこれを解決できます。ただし、複数のクライアントが接続できるようになります。しかし、私は 1 つの接続のみを受け入れたいと考えています。

これを達成する方法はありますか?

4

1 に答える 1

9

max-children次のオプションを使用して、子の数を制限できます。

LISTEN オプション グループ、リッスン ソケットに固有のオプション

max-children= 同時子プロセスの数を制限します [int]。デフォルトは無制限です。

これにより、PTY と対話できるクライアントの数を 1 つに制限できますが、他のクライアントの接続を妨げることはありません。他の接続は、最初の接続が閉じられるまで単にキューに入れられます。それを防ぎたい場合は、 socat 呼び出しをwhile true; do ..; doneループでラップすることをお勧めします。

while true; do
  socat PTY,link=/dev/ttyV1,echo=0,raw,unlink-close=0 TCP-LISTEN:11313,forever,reuseaddr
done
于 2015-01-22T09:31:05.947 に答える