web-dev-qa-db-ja.com

マルチスレッドサーバーとしてのnetcat

私はnetcatを使用して、次のような単純なサーバーを実行します。

while true; do nc -l -p 2468 -e ./my_exe; done

このようにして、誰でもポート2468でホストに接続し、「my_exe」と通信できます。
残念ながら、開いているセッション中に誰かが接続しようとすると、netcatが次の "while"ループまで待機しないため、 "接続拒否"エラーが発生します。

Netcatをマルチスレッドサーバーのように動作させる方法はありますか?つまり、常に着信接続をリッスンする方法はありますか?そうでない場合、これに対するいくつかの回避策はありますか?

12
etuardu

タスクに間違ったツールを使用しています: cspi-tcp 、特に tcpserver のようなものを使用してください:

tcpserver waits for incoming connections and, for each connection, 
runs a program of your choice.
18
akira

使用しているオペレーティングシステムについては触れていませんが、シェルコマンドの例の構文に基づいて、LinuxまたはUnixであると想定します。

システムが実行されている場合 xinetd (またはその前身 inetd )、そのソフトウェアを使用して、選択したポートで接続をリッスンし、実行可能ファイルを実行して応答することができます。 xinetd/inetdを使用すると、複数の同時接続を許可するオプションがあり、それぞれが実行可能ファイルの個別のインスタンスによって処理されます。

3
Mox