• [rcssbase][rcssserver] 圧縮通信問題 解決 (akiyama) 03:09:24

どうもおかしいと思って,圧縮/展開処理時に何が行われているのかを把握するためにzlibのソースを読むことにした. ただし,流石に各関数を全部追っかけるのは辛いので,zlibのソースパッケージに含まれていたexamplesのソースを斜め読みすることで,正しい書き方を見つけることを試みた. 結果,上手い具合に原因を発見できた.

どうやら,inflate や deflate へ新しいデータを渡すたびに inflateReset または deflateReset を呼ばならないようだ. zlib.h のドキュメントを改めて読むと,これらは inflateInit + inflateEnd (deflateInit + deflateEnd)の効果を持っているが,内部のバッファをそのまま維持するとのこと. こういうのが欲しかったんですよ.

早速,コードに挿入してみたら,見事,圧縮通信ができるようになった. いやはや,zlibは分かりにくい. どのバージョンからこんな仕様になってたんだろう.

  • [librcsc] 圧縮通信をサポート. (akiyama) 03:09:24

rcssserverの圧縮通信の問題が解決したので,クライアント側でも圧縮通信を使えるようにオプションを追加した.


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-03-14 (月) 14:51:37 (1285d)
SourceForge.JP
Creative Commons License
RoboCup tools by Hidehisa Akiyama is licensed under a Creative Commons 表示-非営利 2.1 日本 License.