回答編集履歴

2

訂正

2020/07/09 09:24

投稿

keicha_hrs
keicha_hrs

スコア6766

test CHANGED
@@ -110,13 +110,13 @@
110
110
 
111
111
  (2020/07/09追記)
112
112
 
113
- ServerSock.javaの受信部分、こんな感じすれば受信するデータサイズに依存しないようにできるんじゃないかと思います。地味だけど。
113
+ ServerSock.javaの受信部分、こんな感じでByteArrayOutputStreamを活用すれば受信するデータサイズに依存しないようにできるんじゃないかと思います。
114
114
 
115
115
 
116
116
 
117
117
  ```java
118
118
 
119
- ArrayList<Byte> c = new ArrayList<>();
119
+ ByteArrayOutputStream byteos = new ByteArrayOutputStream();
120
120
 
121
121
  byte[] tem = new byte[1024];
122
122
 
@@ -130,7 +130,7 @@
130
130
 
131
131
  while ((a = input.read(tem)) > -1) {
132
132
 
133
- for (int i = 0; i < a; i++) c.add(tem[i]);
133
+ byteos.write(tem, 0, a);
134
134
 
135
135
  count += a;
136
136
 
@@ -142,12 +142,8 @@
142
142
 
143
143
 
144
144
 
145
- byte[] b = new byte[c.size()];
145
+ byte[] b = byteos.toByteArray();
146
146
 
147
- for (int i = 0; i < c.size(); i++) {
148
147
 
149
- b[i] = c.get(i);
150
-
151
- }
152
148
 
153
149
  ```

1

追記

2020/07/09 09:24

投稿

keicha_hrs
keicha_hrs

スコア6766

test CHANGED
@@ -103,3 +103,51 @@
103
103
  }
104
104
 
105
105
  ```
106
+
107
+ ---
108
+
109
+
110
+
111
+ (2020/07/09追記)
112
+
113
+ ServerSock.javaの受信部分、こんな感じにでもすれば受信するデータサイズに依存しないようにできるんじゃないかと思います。地味だけど。
114
+
115
+
116
+
117
+ ```java
118
+
119
+ ArrayList<Byte> c = new ArrayList<>();
120
+
121
+ byte[] tem = new byte[1024];
122
+
123
+ int a;
124
+
125
+ int count = 0;
126
+
127
+
128
+
129
+ //byte配列を読み込む
130
+
131
+ while ((a = input.read(tem)) > -1) {
132
+
133
+ for (int i = 0; i < a; i++) c.add(tem[i]);
134
+
135
+ count += a;
136
+
137
+ }
138
+
139
+ input.close();
140
+
141
+ sock.close();
142
+
143
+
144
+
145
+ byte[] b = new byte[c.size()];
146
+
147
+ for (int i = 0; i < c.size(); i++) {
148
+
149
+ b[i] = c.get(i);
150
+
151
+ }
152
+
153
+ ```