2016-05-05 10 views
1

プロジェクトでJavaのソケットを介してhtmlファイルを送信する必要があります。私はブラウザに表示されるテキストを取得することができたが、画像は一切読み込まれなかった。私は最初にhtmlファイルを送るのを助けるためにこのコードをオンラインで見つけましたが、写真を送信する方法があるかどうか疑問に思っています。私はimgフォルダ内のすべての画像を持っています。これはhtmlファイルの場所です。どのように画像とともにHTMLファイルをJavaのソケット経由で送信しますか

public class SimpleFileServer { 

    public final static int SOCKET_PORT = 9000; // you may change this 
    public final static String FILE_TO_SEND = "D:\\Project 2\\index.html"; // you may change this 

    public static void main (String [] args) throws IOException { 
    FileInputStream fis = null; 
    BufferedInputStream bis = null; 
    OutputStream os = null; 
    ServerSocket servsock = null; 
    Socket sock = null; 
    try { 
     servsock = new ServerSocket(SOCKET_PORT); 
     while (true) { 
      try { 
       sock = servsock.accept(); 

       // send file 
       File myFile = new File (FILE_TO_SEND); 
       byte [] mybytearray = new byte [(int)myFile.length()]; 
       fis = new FileInputStream(myFile); 
       bis = new BufferedInputStream(fis); 
       bis.read(mybytearray,0,mybytearray.length); 
       os = sock.getOutputStream(); 
       os.write(mybytearray,0,mybytearray.length); 
       System.out.println("Done."); 
      } finally { 
       if (bis != null) bis.close(); 
       if (os != null) os.close(); 
       if (sock!=null) sock.close(); 
      } 
     } 
      } finally { 
       if (servsock != null) servsock.close(); 
      } 
     } 
    } 
+0

htmlがブラウザに到着し、が表示され、ブラウザは後で別のソケットでそのURLのGETリクエストを発行します – Exceptyon

答えて

1

プロジェクトでは、HTMLを解析してイメージを個別に要求する必要はありませんか?あなたはウェブサーバーのようなものをシミュレートしているように思えます。一般に、ブラウザはページのHTMLをダウンロードし、解析し、そのページに含まれる各画像または他のリソース(CSS、オフサイトのJavascriptなど)のためにフォローアップ要求をサーバに送信します。

リソースごとに1つのリクエストを実行すると、その時点で要求されているリソースを処理するだけで済むため、ロジックと複雑さの一部がクライアントに返され、頼む。

HTTP 2では多少の変更がありましたが、これはおそらくあなたの質問の範囲外です。

0

通常、イメージファイルはhtmlダウンロードには含まれませんが、htmlファイルが解析されるときに後で要求されます。画像があなたの場合に表示されない理由の問題は、おそらくタグ内のsrcの場所を修正することで修正できます。すべてを一緒にダウンロードする必要がある場合は、.zipアーカイブを送信することをおすすめします。

0

ウェブブラウザで「名前を付けて保存」機能を実現しようとしていると思います。

イメージファイル、埋め込みコンテンツなどのアセットを別に保存する必要があります。

イメージはすでにimgフォルダにありますので、イメージ・フォルダからイメージを選択するには、イメージ・タグのsrc属性をhtmlに変更する必要があります。

関連する問題