teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

訂正

2020/07/09 09:24

投稿

keicha_hrs
keicha_hrs

スコア6768

answer CHANGED
@@ -54,24 +54,22 @@
54
54
  ---
55
55
 
56
56
  (2020/07/09追記)
57
- ServerSock.javaの受信部分、こんな感じすれば受信するデータサイズに依存しないようにできるんじゃないかと思います。地味だけど。
57
+ ServerSock.javaの受信部分、こんな感じでByteArrayOutputStreamを活用すれば受信するデータサイズに依存しないようにできるんじゃないかと思います。
58
58
 
59
59
  ```java
60
- ArrayList<Byte> c = new ArrayList<>();
60
+ ByteArrayOutputStream byteos = new ByteArrayOutputStream();
61
61
  byte[] tem = new byte[1024];
62
62
  int a;
63
63
  int count = 0;
64
64
 
65
65
  //byte配列を読み込む
66
66
  while ((a = input.read(tem)) > -1) {
67
- for (int i = 0; i < a; i++) c.add(tem[i]);
67
+ byteos.write(tem, 0, a);
68
68
  count += a;
69
69
  }
70
70
  input.close();
71
71
  sock.close();
72
72
 
73
- byte[] b = new byte[c.size()];
73
+ byte[] b = byteos.toByteArray();
74
- for (int i = 0; i < c.size(); i++) {
74
+
75
- b[i] = c.get(i);
76
- }
77
75
  ```

1

追記

2020/07/09 09:24

投稿

keicha_hrs
keicha_hrs

スコア6768

answer CHANGED
@@ -50,4 +50,28 @@
50
50
  textView.setText("Succeeded! Sabrina Carpenter...");
51
51
  }
52
52
  }
53
+ ```
54
+ ---
55
+
56
+ (2020/07/09追記)
57
+ ServerSock.javaの受信部分、こんな感じにでもすれば受信するデータサイズに依存しないようにできるんじゃないかと思います。地味だけど。
58
+
59
+ ```java
60
+ ArrayList<Byte> c = new ArrayList<>();
61
+ byte[] tem = new byte[1024];
62
+ int a;
63
+ int count = 0;
64
+
65
+ //byte配列を読み込む
66
+ while ((a = input.read(tem)) > -1) {
67
+ for (int i = 0; i < a; i++) c.add(tem[i]);
68
+ count += a;
69
+ }
70
+ input.close();
71
+ sock.close();
72
+
73
+ byte[] b = new byte[c.size()];
74
+ for (int i = 0; i < c.size(); i++) {
75
+ b[i] = c.get(i);
76
+ }
53
77
  ```