ことですが、「べきである」レベルの話なので無視します。いうレベルの話なので無視します。Accept-Ranges:RFCによれば「送る事ができる」レベルの話ですので無視します。Content-Length:これはボディの長さを示します。Keep-Alive:これは、HTTP1.1から導入された機能です。たくさんのHTTPリクエストが発生します。使いまわすようになります。今回はこのヘッダもつけません。"close"接続オプションを定義する。(なくてもFirefoxでは動きましたが......)。Content-Typeヘッダフィールドを含むべきである。これは付けることにします。ひとつのHTMLファイルを返す上記のようなヘッダを返せるよう修正したサーバが以下(Server02.java)です。}}7行目で定数DOCUMENT_ROOTを設定しています。これは私が自分のWebサイトのHTMLをローカルで持っているフォルダです。HTMLを用意して、そのフォルダを設定してください。InputStreamおよびOutputStreamを使ってバイト単位で行います。getDateStringUtc()も作成しています。ヘッダが終わる空行まで受け取っています。取得するファイルのパスを取得しています(60行目)。ここでは「/index.html」のような文字列がpathに取得できることになります。65行目から69行目までで、ステータスラインとレスポンスヘッダを返しています。70行目がレスポンスヘッダの終了の空行です。1バイトずつ読み込み、クライアントに返送しています。Windowsは両方に対応しているので大丈夫です。こんな感じでHTMLを参照することができました。見ての通り、画像は取得できていませんし、CSSも効いていません。このサーバは1回しかTCP接続を受け付けていないので当然です。マルチスレッド化とContent-Typeここまでで、ひとつのHTMLファイルを返し、ブラウザで表示することができました。画像やCSSが取得できていません。たくさんの接続先からの接続を並行して受け付けられなければなりません。そこで、あとやるべきことは以下の2点です。画像やCSS等、ファイル種別に応じたContent-Typeの設定これに対応したプログラムが以下です。それなりの大きさになってきたので、クラスもふたつに分けました。main()メソッドを含むMain.javaです。ServerThreadにそのソケットを渡して別スレッドで起動しています。次の接続の受付に入ります。同時に複数のソケットを生成し、独立して通信が可能です。以下がServerThreadのソース(ServerThread.java)です。指定していることです。拡張子とContent-Typeの対応表が51行目からのHashMapです。以下のように画像もCSSも有効になりました。クリックすると遷移できます。ここでは気にしないことにします。いうレベルの話かと思います。イメージができていないと結局困ります。いう人の助けになれば幸いです。いったこまごまとしたところをまず直します。いかんせん私の時間が......何も保証はできませんが、気長にお待ちくださいませ。