java - 计算java web客户端发送和接收的字节数

标签 java web network-programming client

我有一个用 Java 编写的简单 Web 客户端,我必须计算它发送和接收的字节数。然后我必须将结果与 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();
        }

    }
}

最佳答案

您可以创建自己的 FilterInputStreamFilterOutputStream 实现,对通过的所有数据进行计数。然后只需将它们用作过滤器,例如:

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

关于java - 计算java web客户端发送和接收的字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12767751/

相关文章:

Java 8 嵌套流过滤

java - 在 Apache HTTP Server 中调用 Java 程序

javascript - 类型 'MyObject' 上不存在属性 - typescript 扩展

c - 如何查找是否设置了 MORE FRAGMENTS 字段?

客户端端口号在服务器 TCP/IP 套接字中显示错误 C 语言编程

java - 将数据表转换为 ListView vb.net

java - JPA 内存管理问题

java - JSP访问全局变量

c# - 当 BodyStyle = WebMessageBodyStyle.Wrapped 时从 C# 调用 Rest WCF 服务操作

android - (Android) 是否有可靠的信号表明网络 channel 是可路由的?