TCP/IP ソケットを介して通信する Mono ベースの C# クライアントと Python サーバーを使用するプログラムがあります。メッセージはほとんどバイナリ形式を使用しますが、通常、各メッセージの大部分は埋め込まれた UTF-8 文字列 (英語) です。各メッセージは通常短い (100 バイト未満) ですが、一部は長くなります (最大 64K)。大量のデータが交換されるため、送信時にデータを圧縮することで、メッセージ サイズと帯域幅の使用量を削減したいと考えています。
私の最初の調査では、2 つの標準ライブラリ間で明らかに互換性があるものは見つかりませんでした。Python にはzlibライブラリがありますが、C# のDeflateStreamまたは GZipStream を使用できません (利用できない外部 DLL が必要なため)、SharpZipLib の ZipOutputStream では動作しないようです (「エラー -3 - 正しくないヘッダー" 応答)。(Mono を使用していない人はもっと運がいいかもしれません。以下の Duncan の回答を参照してください。)
この通信リンクを介して圧縮を有効にする簡単な方法について聞きたいと思います。ある言語で簡単に実装できるソリューションは、他の言語でも同等のものが必要であることを念頭に置いてください。バイトストリーム全体を圧縮することをお勧めしますが、バイナリメッセージではなくUTF-8文字列に特化したソリューションを受け入れます。
理想的には外部依存を最小限に抑えたいのですが、それは現実的ではないかもしれません。
更新: SharpZipLib を試してみたところ、Python のデコード側で繰り返しエラーが発生したため、特定の言語の圧縮ライブラリの提案だけでなく、機能することが知られているコードを使用して具体的な提案を行うことができました。