2012-04-22 14 views
1

HTTPヘッダーとデータ転送速度を持たないHTMLファイルのサイズを探したい。以下は私のコードです。HTMLファイルのサイズとデータ転送速度を調べる方法

import java.net.*; 
import java.io.*; 

public class HttpCon 
{ 
    public static void main (String[] args) throws IOException 
    { 
    Socket s = null; 

    try 
    { 
     String host = "host1"; 
     String file = "file1"; 
     int port = 80; 

     s = new Socket(host, port); 

     OutputStream out = s.getOutputStream(); 
     PrintWriter outw = new PrintWriter(out, false); 
     outw.print("GET " + file + " HTTP/1.1\r\n"); 
     outw.print("Host: " + host + ":" + port + "\r\n"); 
     outw.print("Accept: text/plain, text/html, text/*\r\n"); 
     outw.print("\r\n"); 
     outw.flush();   

     InputStream in = s.getInputStream(); 
     InputStreamReader inr = new InputStreamReader(in); 
     BufferedReader br = new BufferedReader(inr); 
     String line; 

     while ((line = br.readLine()) != null) 
     { 
       System.out.println(line); 
     } 
     br.close();  

    } 

    } 
} 

しかし、これを行う方法はわかりません。私が見ることができるソースコードや、私が適用できるリソースはありますか?

ご協力いただきありがとうございます。

+0

コードの貼り付けが大規模で、これを行う方法がわかりません。どのようにすればよいのか分かりませんか? – zmccord

+0

@zmccord実際には2つの問題があります。まず、このコードでダウンロードしたHTTPヘッダーのないHTMLファイルのサイズを調べる必要があります。特定の機能やその他の推奨事項はありますか?第二に、サイズを計算した後、私はデータ転送速度を見つけなければならない。 – user1349536

答えて

0

あなたが求めているのは、大きな問題ではありません。空行を読むまで行を読んでください。それはヘッダが終わるところです。その後、読んだだけで読んだすべての文字を数えればそれはあなたのファイルサイズです。転送速度について:

final long start = System.nanoTime(); 
long charsRead = 0; 
... do the transfer, counting chars ... 
System.out.println("Transfer rate: " + 
    (charsRead/(1e-6 * (System.nanoTime() - start)))); 

ここでの唯一の問題は、あなたが文字ではなくバイトを数え、あなたがBufferedReaderを使用していることになります。バイトが必要な場合は、生のInputStreamを使用する必要があります。その後、ヘッダーがどこで終わるかを見つけるために、お尻にわずかな痛みが生じます。 BufferedReaderではなく、先読みしないInputStreamReaderを使って(おそらく)回避することができます。ヘッダーの終わりを見つけたら、生のInputStreamに切り替えて応答本文を読んでください。

関連する問題