У меня есть массив Numpy.В моем коде я хочу отправить numy ndarray через сокеты, и я реализовал это.Он полностью функционирует, когда я использую его между клиентским и серверным сокетами, которые размещены на моем ПК, хотя при попытке отправить ndarray как клиент на сервер на другом ПК он не работает и показывает «тайм-аут» -ошибка сокета.
Я думаю, что все сделал правильно, хотя.Вот как я построил свой код:
Клиент отправляет первое сообщение для установления соединения.
Сервер отправляет обратно, что он готов кполучить данные.
Клиент отправляет numpy ndarray в виде байтов, а также сообщение 'translation_over'.
Сервер отправляет обратно то, что получил данные.
# Client side:
client_socket.send(data_to_send.encode()) -> Some headers.
received_data = client_socket.recv(1024) -> Receive data from server.
print('What I received after sending headers (1): ', received_data.decode())
client_socket.send(data.tobytes()) -> Sending the ndarray as bytes.
client_socket.send("transmission_over".encode())
received_data = client_socket.recv(1024) -> Receive data from server.
print('What I received after sending the data (2): ', received_data.decode())
print('sent data!')
# Server side:
def receive_numpy_array(connection):
received_bytes = ''.encode()
while True:
raw_data = connection.recv(1024)
if raw_data == 'transmission_over'.encode():
break
received_bytes += raw_data
np_array_from_bytes = np.frombuffer(received_bytes, dtype=np.uint64).reshape((8192,))
return np_array_from_bytes
raw_data = connection.recv(1024) -> Receive headers.
connection.send("HOST >>> YOU: Ready to receive data!".encode()) -> Sending back that server is ready.
np_array = receive_numpy_array(connection) -> Receiving & constructing ndarray.
connection.send("HOST >>> YOU: Received your data segment!".encode()) -> Sending back confirmation.
При попытке использовать этот код, когда клиент находится на одном ПК, а сервер на другом, он не работает и показывает ошибку, что время ожидания сокета внутри функции receive_numpy_array истекло.
При тестировании на моем собственном ПК и на клиенте, и на сервере все работает нормально, и я успешно получаю массив numpy.
Так почему этот код работает только при использованииодна и та же машина для клиента и сервера и как это исправить?
Заранее спасибо!