■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50

monazilla Part 3

890 :844 :02/12/27 21:02
localDatSize = ローカルDATのサイズ
localLastLinePos = ローカルDATの最後の行の先頭位置
localLastLineSize = ローカルDATの最後の行のサイズ(localDatSize - localLastLinePos)
localLastLine = ローカルDATの最後の行そのもの

送信するヘッダ
 Range: bytes=localLastLinePos-
サーバーからのレスポンス
 serverContentLength = サーバーDATのlocalLastLinePosから最後までのバイト数

if ( serverContentLength < localLastLineSize ) {
 //あぼーんで縮んだか、ローカルDATが腐ってると判断。
 最初から読み直し。
} else if ( serverContentLength > localLastLineSize ) {
 //新たに書き込みがあったと判断。
 localLastLineSizeバイト、サーバーから読んでserverLastLineに格納
 if ( memcmp( localLastLine, serverLastLine, localLastLineSize ) == 0 ) {
  //最後の行が一致しているのであぼーんはなかったと判断。
  //ただしあぼーん後の書き込みでたまたま最後の行が同じになった可能性あり。
  続きから最後までサーバーから読んでローカルDATに連結。
 } else {
  //(*1)あぼーんがあったか、ローカルDATが腐ってると判断。
  最初から読み直し。
 }
} else { // サイズ同じ
 //変更なしと判断。何も読まない。
 //ただし、あぼーん後の書き込みでたまたまサイズが一致してしまった可能性あり。
 //それでも次に書き込みがあれば、ほとんどの場合(*1)に行くと思われる。
}

226KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30