UDPエコーサーバーでパケットを取得し、受信したとおりに応答するようにします。netcat
またはを使用してこれを行うにはどうすればよいsocat
ですか?永遠に生き続け、複数のホストからのパケットを処理する必要があります。
UDPエコーサーバーでパケットを取得し、受信したとおりに応答するようにします。netcat
またはを使用してこれを行うにはどうすればよいsocat
ですか?永遠に生き続け、複数のホストからのパケットを処理する必要があります。
回答:
もう1つのnetcatのようなツールはnmapバージョンでありncat
、このようなものを単純化するための組み込みのグッズがたくさんあります。これはうまくいくでしょう:
ncat -e /bin/cat -k -u -l 1235
-eは/ bin / catを実行することを意味します(入力内容をエコーバック
するため)-kはキープアライブを意味し、各接続後にリッスンし続ける
-uはudpを意味します
-l 1235はポート1235でリッスンすることを意味します
私socat -v PIPE udp-recvfrom:5553,fork
はサーバーとsocat - udp:localhost:5553
クライアントを実行していました。
これはとても助かりました!
socat TCP4-LISTEN:2000,fork EXEC:cat
分岐 nc -u -l -p 4321
してからdup(2)を使用して接続するCプログラムを作成できます。
次に、無限ループで、親はstdinから読み取り、親が読み取ったものをstdoutに書き込みます。
socat -v PIPE UDP-LISTEN:5555,fork
が、2番目の接続は拒否されます。ちなみに、TCP-LISTENではうまく機能します。私は、そうでない場合は、私はすべてのC.でそれを書くことができ、コードに回避しています
Windows上で実行しており、cygwinなどの環境のようなUNIXを使用している場合、netcat migthは-eパラメーターを提供しません。これは私にとってはうまくいきました。
netcat
Ubunutuにプリインストールされたソリューション
netcat
Ubuntuの16.04でプリインストールから来てnetcat-openbsd
、そして何も持っていない-c
オプションをが、マニュアルには、ソリューションを提供します:
sudo mknod -m 777 fifo p
cat fifo | netcat -l -k localhost 8000 > fifo
次に、クライアントの例:
echo abc | netcat localhost 8000
TODO:入力文字列値を変更する方法は?以下は応答を返しません。
cat fifo | tr 'a' 'b' | netcat -l -k localhost 8000 > fifo
ただし、リモートシェルの例は機能します。
cat fifo | /bin/sh -i 2>&1 | netcat -l -k localhost 8000 > fifo
ただし、同時要求を単に処理する方法がわかりません。