0

私はJavaで書かれたSimpleWebクライアントを持っており、それが送受信するバイト数を数える必要があります。次に、netstat-sコマンドを使用して結果を比較する必要があります。また、送受信したパケットの平均サイズを測定するにはどうすればよいですか。WebClient.javaは次のとおりです。

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();
        }

    }
}
4

1 に答える 1

2

の独自の実装を作成することができFilterInputStreamFilterOutputStreamそれは通過したすべてのデータをカウントします。次に、それらをフィルターとして使用します。次に例を示します。

    OutputStream os = new CountingOutpurStream(socket.getOutputStream());
    InputStream is = new CountingInputStream(socket.getInputStream());
于 2012-10-07T09:57:04.927 に答える