質問編集履歴
3
間違えを修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -220,7 +220,7 @@
|
|
220
220
|
|
221
221
|
binary = out.getvalue()
|
222
222
|
|
223
|
-
connection.send(
|
223
|
+
connection.send(binary)
|
224
224
|
|
225
225
|
finally:
|
226
226
|
|
2
内容を追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -105,3 +105,125 @@
|
|
105
105
|
connection.close()
|
106
106
|
|
107
107
|
```
|
108
|
+
|
109
|
+
### 試したこと(追記)
|
110
|
+
|
111
|
+
np.saveとnp.loadを用いコードを書き直しし、互いに通信しようとしたところ、
|
112
|
+
|
113
|
+
サーバ側のnp.loadでデシリアライズできませんでした。
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
- サーバー側19行目「print(data2)」のブレークポイントでデバッグ
|
118
|
+
|
119
|
+
```debug
|
120
|
+
|
121
|
+
data2
|
122
|
+
|
123
|
+
array(<function save at 0x7fd590150f28>, dtype=object)
|
124
|
+
|
125
|
+
```
|
126
|
+
|
127
|
+
#### 以下、修正コード
|
128
|
+
|
129
|
+
- クライアント側
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
```python
|
134
|
+
|
135
|
+
from io import BytesIO
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
import socket
|
140
|
+
|
141
|
+
import numpy as np
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
PORT = 11113
|
146
|
+
|
147
|
+
BUFFER_SIZE = 2048
|
148
|
+
|
149
|
+
out = BytesIO()
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
154
|
+
|
155
|
+
s.connect(('server_container', PORT))
|
156
|
+
|
157
|
+
data = np.arange(30)
|
158
|
+
|
159
|
+
data = np.reshape(data,(5,6))
|
160
|
+
|
161
|
+
print(data)
|
162
|
+
|
163
|
+
np.save(out, np.save)
|
164
|
+
|
165
|
+
binary = out.getvalue()
|
166
|
+
|
167
|
+
s.send(binary)
|
168
|
+
|
169
|
+
data2 = s.recv(BUFFER_SIZE)
|
170
|
+
|
171
|
+
data2 = np.load(BytesIO(data2), allow_pickle=True)
|
172
|
+
|
173
|
+
print(data2)
|
174
|
+
|
175
|
+
```
|
176
|
+
|
177
|
+
- サーバー側
|
178
|
+
|
179
|
+
```python
|
180
|
+
|
181
|
+
from io import BytesIO
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
import socket
|
186
|
+
|
187
|
+
import numpy as np
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
PORT = 11113
|
192
|
+
|
193
|
+
BUFFER_SIZE = 2048
|
194
|
+
|
195
|
+
out = BytesIO()
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
200
|
+
|
201
|
+
s.bind(('0.0.0.0', PORT))
|
202
|
+
|
203
|
+
s.listen()
|
204
|
+
|
205
|
+
while True:
|
206
|
+
|
207
|
+
(connection, client) = s.accept()
|
208
|
+
|
209
|
+
try:
|
210
|
+
|
211
|
+
print('Client connected', client)
|
212
|
+
|
213
|
+
data = connection.recv(BUFFER_SIZE)
|
214
|
+
|
215
|
+
data2 = np.load(BytesIO(data), allow_pickle=True)
|
216
|
+
|
217
|
+
print(data2)
|
218
|
+
|
219
|
+
np.save(out, data2)
|
220
|
+
|
221
|
+
binary = out.getvalue()
|
222
|
+
|
223
|
+
connection.send(data)
|
224
|
+
|
225
|
+
finally:
|
226
|
+
|
227
|
+
connection.close()
|
228
|
+
|
229
|
+
```
|
1
内容の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
- 以下に示すようにクライアント側とサーバ側それぞれにサイズやデータ型を予め設定したり、サイズやデータ型を改めてサーバー側
|
9
|
+
- 以下に示すようにクライアント側とサーバ側それぞれにサイズやデータ型を予め設定したり、サイズやデータ型を改めてクライアント側からサーバー側へ通信することで実装できますが、このような暫定的な方法ではなく、2Dのnumpy配列を転送する推奨された方法はありますか?
|
10
10
|
|
11
11
|
|
12
12
|
|