2012-10-07 108 views
0

我有用Java编写的简单Web客户端,我必须计算它发送和接收的字节数。然后我必须将结果与netstat -s命令进行比较。另外,我如何测量我发送和接收的数据包的平均大小。 这里是WebClient.java:计算Java Web客户端发送和接收的字节数

package javaapplication1; 

/** 
* 
* @author 
*/ 
import java.net.*; 
import java.io.*; 
import java.util.*; 

public class WebClient { 
    public static void main(String[] args) { 
     Scanner scanner = new Scanner(System.in); 
     System.out.print("Enter host name (e.g., www.ouhk.edu.hk): "); 
     String host = scanner.nextLine(); 
     System.out.print("Enter page (e.g., /index.html): "); 
     String page = scanner.nextLine(); 
     final String CRLF = "\r\n"; // newline 
     final int PORT = 80; // default port for HTTP 

     try { 
      Socket socket = new Socket(host, PORT); 
      OutputStream os = socket.getOutputStream(); 
      InputStream is = socket.getInputStream(); 
      PrintWriter writer = new PrintWriter(os); 
      writer.print("GET " + page + " HTTP/1.1" + CRLF); 
      writer.print("Host: " + host + CRLF); 
      writer.print(CRLF); 
      writer.flush(); // flush any buffer 
      BufferedReader reader = new BufferedReader(
        new InputStreamReader(is)); 
      String line; 
      while ((line = reader.readLine()) != null){ 
          System.out.println(line); 

      } 
      System.out.println("Recieved bytes:"); 
      socket.close(); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 

    } 
} 

回答

2

你可以创建自己的FilterInputStreamFilterOutputStream实现,将计算穿过的所有数据。然后,只需把它们作为过滤器,例如:

OutputStream os = new CountingOutpurStream(socket.getOutputStream()); 
    InputStream is = new CountingInputStream(socket.getInputStream()); 
+0

u能提供线索,以实现它=)) – Nate

+0

这里是链接到这个类的Java文档:http://commons.apache.org/ io/api-release/org/apache/commons/io/input/CountingInputStream.html这是雅加达公共区域的一部分 – AlexR

+0

pacakge不存在包org.apache.commons.io.input; – Nate

相关问题