测量通过套接字发送的数据大小

时间:2012-12-14 19:07:26

标签: java sockets bandwidth

我在考虑如何阅读通过Socket发送的数据量。例如,如果我创建了一个聊天应用程序然后想知道消息需要多少(以千字节或字节为单位),我该如何衡量呢?

我发送了一条消息,例如“Hello,world!”。如何衡量发送所需的带宽量?

我知道有一些程序可以监控通过网络发送和接收的数据量以及所有这些,但我想尝试自己动手学习一些。

2 个答案:

答案 0 :(得分:2)

将套接字的输出流包裹在CountingOutputStream

CountingOutputStream cos = new CountingOutputStream(socket.getOutputStream());
cos.write(...);
System.out.println("wrote " + cos.getByteCount() + " bytes");

答案 1 :(得分:0)

如果发送没有标头的原始字符串(协议) 对于你有的字符串

String hello = "Hello World";
hello.getBytes().length //size of the message

要在发送文件时向用户显示进度,您可以执行此操作

Socket s = new Socket();
//connect to the client, etc...

//supose you have 5 MB File
FileInputStream f = new FileInputStream( myLocalFile );

//declare a variable
int bytesSent = 0;
int c;
while( (c = f.read()) != -1) {
   s.getOutputStream().write(c);
   bytesSent++; //One more byte sent!
   notifyGuiTotalBytesSent(bytesSent);
}

嗯,这只是一个非常简单的实现,不使用缓冲区来读取和发送数据只是为了让你明白。 方法nitify ....将在GUI线程(而不是这一个)中显示bytesSent值