• ベストアンサー

計測用データを送信するには

帯域測定プログラムを作っています。 まず送信側で通信に使用するデータサイズを決めて受信側に送信し、 そのデータを使って互いに送受信して帯域測定を行いたいです。 送信側で50000バイトのデータを使って計測を使用と決めて、50000バイトという情報を受信側に送信します。 int data = 50000; String unit = "byte"; byte[] send_size = (data+unit).getBytes(); out.write(send_size); out.flush(); これを受信側は受け取り50000バイトという数値に変換したいのですが、 変換の仕方が分かりません。 バイトに変換して送信しているので、5は53に、0は48に変換されているので、53->5、48->0というように変換してやりたいのですが、 どうすればよいのでしょうか? また、50000バイトという情報を相手側にもっと賢く遅れる方法があればそちらについてのアドバイスも頂きたいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • junkUser
  • ベストアンサー率56% (218/384)
回答No.2

提示されたコードを受け取るにはこんな感じで。 ---- byte[] buff = new byte[1024]; int read_size; long get_size; String get_string; read_size = in.read(buff); get_string = new String(buff,0, read_size); /* 数値部分を抜き出すが面倒なので省略 */ get_size = Long(get_string).parseLong; ---- 入力データは "50000byte" という表現よりも byte:50000 などのように split メソッドが使える形式の方が簡潔に書けますよ。 > 相手側にもっと賢く遅れる方法があれば Java同士であれば DataOutputStream を使って writeLong(long) などで送ってはどうでしょうか。

その他の回答 (1)

  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

outが、何かわからないので、 バイトを、ストリングに変換し見ました。 int data = 5000; String unit ="Byte"; String us = 5000+unit; System.out.println(us); byte [] send_size = us.getBytes(); String string_send_size = new String(send_size); System.out.println(string_send_size); 実行結果 5000Byte 5000Byte