2017-12-06 6 views
0

私はテキストベースのプロトコルでメッセージを受け取るサーバーを持っています。サーバーは何も返送しません。これらのメッセージは、プロトコルがバイナリではなく、圧縮もないため、ネットワーク帯域幅を大幅に消費します。この問題を解決するには、クライアント側とサーバー側で圧縮プロキシを実行したいと考えています。クライアント側では、プロキシはTCPを介してデータを受信し、圧縮してサーバー側のプロキシに送信する必要があります。サーバー側プロキシは、データを受信し、解凍し、サーバーアプリケーションに送信する必要があります。netcatを圧縮プロキシとして使用する方法

クライアント側のコードは次のようなものでなければなりません:

cd /tmp 
mknod backpipe p 
nc localhost 7171 0<backpipe | gzip | nc server-ip 7272 | tee backpipe 

とサーバ側の

cd /tmp 
mknod backpipe p 
nc -l -p 7272 0<backpipe | gunzip | nc -l -p 7171 | tee backpipe 

サーバーアプリケーションが7171ポートで動作し、圧縮プロキシが7272ポートを使用していますデータを転送します。しかし、これは何らかの理由で私のために働いていません。

+0

netcatは実際にプログラミング言語でもプログラミングツールでもありません。 SuperUserやServerFaultのような他のStackExchangeサイトでは、おそらくもっと良い答えを得るでしょう。 –

答えて

2

あなたはほとんどそこにいます。

クライアント側、前方サーバー-IPでリモートサーバーに、ローカルポート7171をリッスン:7272:

mkfifo client_rely 
nc -l 7171 < client_rely | gzip -c | nc server-ip 7272 > client_rely 

サーバ側、前方ポート7171上の実サーバに、ポート7272をリッスン:

mkfifo server_rely 
nc -l 7272 < server_rely | gzip -d -c | nc 7171 > server_rely 

この例では、macOSに同梱されているncを使用しています。

関連する問題