0

ソケット経由で送信するデータの量をどのように読み取るかを考えていました。たとえば、チャット アプリケーションを作成してから、メッセージがどれくらいの量 (キロバイトまたはバイト単位) でかかるかを調べたい場合、これをどのように測定すればよいでしょうか?

「Hello, world!」のようなメッセージを送ります。送信に必要な帯域幅の量を測定するにはどうすればよいですか?

有線で送受信されるデータの量などを監視するプログラムがあることは知っていますが、いくつかを学ぶために自分でこれを試してみたかったのです。

4

2 に答える 2

2

Wrap the socket's output stream in a CountingOutputStream:

CountingOutputStream cos = new CountingOutputStream(socket.getOutputStream());
cos.write(...);
System.out.println("wrote " + cos.getByteCount() + " bytes");
于 2012-12-14T21:01:46.480 に答える
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値を表示します

于 2012-12-14T19:16:35.217 に答える