3

cygwinでは、次のようにnetcatプロキシをセットアップしようとしています。

  1. サーバー:私が実行している1つの端末で

    nc -lp 6000
    
  2. プロキシ:2番目の端末でプロキシを実行しています(2000でリッスンし、さらに6000に渡しています)。

  3. クライアント:私が実行している3番目の端末で

    nc localhost 2000
    

テスト

クライアントで何かを入力すると、サーバーに表示されます。サーバーで何かを入力すると、クライアントに表示されます。

以下は私が2番目のターミナルでやろうとしたことです:

  1. これは正常に動作します:

    nc -lp 2000 <fifo | tee /dev/stderr | nc localhost 6000 >fifo
    

(fifoは以前に「mkfifofifo」で設定されていました)

  1. しかし...これらは機能しません:(

    nc -lp 2000 <fifo | awk '{print}' | nc localhost 6000 >fifo
    nc -lp 2000 <fifo | awk -f my.awk | nc localhost 6000 >fifo
    nc -lp 2000 <fifo | awk -f my.awk - | nc localhost 6000 >fifo
    

(my.awkには{print}のみが含まれています)

助けてくださいpppppppppppppp!!!!!!!! よろしくお願いします、エイドリアン。

4

1 に答える 1

4

この問題はバッファリングが原因であり、awkでオフにする標準的な方法はありません。fflush一部のシステムでは、たとえば次のように呼び出すことで、ハッキングできます。

nc -lp 2000 <fifo | awk '{print}{fflush()}' | nc localhost 6000 >fifo

残念ながら、これはプラットフォームとawkのバージョンによっては常に機能するとは限りません。Perlなど、バッファリングを無効にできる別のプロセッサの使用を検討することもできます。

于 2011-12-30T22:08:47.140 に答える