|
> 一度目のrecvでレスポンスヘッダが送られてきて、 > 二度目のrecvでエンティティボディが取出されることがわかりました。 十分な量のバッファを用意して、十分なサイズを指定したからといって、 一度の recv で全てのデータを取り出せるという保証はありません。 これは read でも同じです。 http://X68000.startshop.co.jp/~68user/net/c-open.html の最後には > もし指定したファイルの長さが 600 バイトなら、 > 1回目のループ: read_size == 256 > 2回目のループ: read_size == 256 > 3回目のループ: read_size == 88 > 4回目のループ: read_size == 0 と書きましたが、これは相手がファイルシステムだからであって、 ソケット経由だと、 char buf[1000]; read(socket,buf,sizeof(buf)); としても、 1回目のread: read_size == 10 2回目のread: read_size == 20 3回目のread: read_size == 1 4回目のread: read_size == 0 などとなる可能性があります (この例ではデータ量は31バイト)。 要は IP パケットが細切れに送られてきたとき、read(recv) すると 要求されたサイズのデータが届くまで待つのではなく、そのときまでに 受け取っているデータを返すわけです。例えば echo サーバで、 $|=1; print(SOCKET,"a"); sleep(5); print(SOCKET,"b"); sleep(5); print(SOCKET,"c"); sleep(5); とすると、細切れなデータが送られるわけです。 > (例)「Last-Modified」→「Last-modified」など。。。 Netscape Proxy Server がわざわざ変換しているのか、 WWW サーバがそういうヘッダを返すのかはわかりませんが、 規格上は大文字小文字は区別されません (RFC のどこかに書いてあるはず)。 Last-Modified/Last-modefied/LaSt-MODIfied は同じように 扱わないといけません。 ちょっと用事があり、今日の夜から数日間 返答できませんのでよろしく。 |
|
> 一度の recv で全てのデータを取り出せるという保証はありません。 あ、これは read_size = recv(s,buf,sizeof(buf),0); のことです。 read_size = recv(s,buf,sizeof(buf),MSG_WAITALL); なら、全データを待ちますので、recv は1回だけ実行すれば OK です。 ただし MSG_WAITALL を指定しても、シグナル受信・コネクション切断時は、 全データを待たずに recv から戻ります。 |
|
ども、初めまして。とほほWWW−ラウンジから来ました。 「ネットワークプログラミングの基礎知識」が大変ためになります。 同様な事は書籍(ラクダ青本)にも書かれていますが、こちらがずっと解かりやすいです。 コンテンツ制作御苦労様です & 有り難う御座います。 ------------------------------ すっごく勉強になる解説のため、繰り返し読む事になるのですが、ベージ配色が、テキストが黒系統なく白系統であるため目が少々付かれます、またバックカラーとテキストの明暗が近寄っているのでこれも目に付かれる要因のような気がします。まっここいらは個人的嗜好の部分だと思います。 そういう事で、バックカラーとテキストカラーの指定を外部スタイルシートで指定させようと思い、その為には取りあえずコンテンツの階層を含めてローカルにダウンし、その後ローカル内で階層を跨いだHTMLファイルの修正をPerlで行う事にしました。 そういう事で、今、再帰的ディレクトリエントリサーチスクリプトを制作中です。。。。。 #いつも本題の前に、「あれやる、これやる」と時間がかかる私でした(笑) #ところで、68userさんは、とほほラウンジでの「B-cus」さんと同一な方でしょうか?、、、まっいらぬ詮索の範疇なのですが(^^; |
|
cksumコマンドについて知りたいのですが、 ��cksumコマンドはファイルに対してどういったチェックを行うで しょうか? �■淡生譴�らcksumコマンドを実行かけた時に、正常に終了したか、 もしくは、異常終了したかの判断は行えるのでしょうか? もし、行えるのであれば、詳細なエラー情報はどういったものが あるのでしょうか。 |