• 締切済み

HTTPサーバプログラム

C言語でHTTPサーバを作ろうとしています。 大方動くのですが、Java Applet(Jarファイル)を埋め込んだWebページをクライアント側のブラウザに表示させようとすると、エラー(ClassNotFoundError)が発生してしまいます。 ※GIFファイルなどの表示はうまく動いています。 パケットキャプチャソフトなどを活用して色々調べてみると、サーバ側からクライアント側へJarデータを送信する処理が上手く動いていないようです。 今のHTTPサーバの制約で、データ送信関数で一度に送信できるサイズが32KB程度になっています。 Jarファイルがこの最大サイズ(32KB)以下であれば問題なくクライアント側でJava Appletが起動するのですが、このサイズを超えるJarファイルの場合に先のエラーが発生してしまいます。 ※例えばJarファイルサイズが50KBの場合は、データ送信関数を2度呼び出す処理になります(1回目は32KB送信、2回目は残りの18KBを送信します)。 パケットキャプチャソフトでデータの流れを確認すると、50KBのJarファイル・データはクライアント側へちゃんと送信されているように見えるのですが、Jarファイル・データがクライアント側へ送信された後、(恐らく、クライアント側でJarファイルが正しく受信されなかったと認識されているため)クライアント側はClassファイルをサーバ側へリクエストしに行っています。 ※<applet archive="test.jar" code="test.class">としている場合は、"test.jar"ファイルのデータ送信後、クライアント側から"test.class"をサーバ側へリクエストしに行っています。 50KB程度のGIFファイルなどは、分割送信処理を用いてちゃんとクライアント側のブラウザで表示できているのですが…Jarファイルはなぜ上手くいかないのか分かりません。 Jarファイル・データ送信時には何か特別な制約があるのでしょうか? どなたか詳しい方がおられましたらお教えいただきたく存じます。

みんなの回答

回答No.2

お疲れ様です。 憶測なので聞き流していただいても構いません。 私もwindows上で動くHTTPサーバをC言語で組んでみたことがあります。 (PHPを動かせずに中断中) そこで、動作的におかしいなと思ったときに迷い込んだのが以下の状況です。 ★ブラウザにfirefoxを使用している。 HTTPサーバとブラウザを同じPC上で動かすと可笑しな動作をする事があります。 また、「Conten-Type」や「Keep-alive」の文言もIEとFirefoxで大文字・小文字で認識する・しないがあったと思います。 以上、試してみる価値があるかな?

  • Lchan0211
  • ベストアンサー率64% (239/371)
回答No.1

レスポンスヘッダのContent-Lengthは、正しい値(50K)になっていますか? Conten-Typeも正しい値が設定されていますか?

関連するQ&A