I have the following code sending array from the server to the client using req and reply pattern,
def send_array( socket, A, flags = 0, copy = True, track = False ):
"""send a numpy array with metadata"""
md = dict( dtype = str( A.dtype ),
shape = A.shape,)
socket.send_json( md, flags | zmq.SNDMORE )
return socket.send(A, flags, copy = copy, track = track )
context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5667")
videoFile = "C:/Users/Downloads/test.mp4"
camera = cv2.VideoCapture(videoFile)
while True:
grabbed, frame = camera.read()
try:
frame = cv2.resize( frame, (224, 224) ).astype( "float32" )
except cv2.error:
break
image= img_to_array(frame)
image=image.reshape((1,image.shape[0],image.shape[1],image.shape[2]))
image=preprocess_input(image)
preds=model.predict(image)
send_array(socket, preds)
socket.close()
def recv_array( socket, flags = 0, copy = True, track = False ):
md = socket.recv_json( flags = flags )
msg = socket.recv(flags = flags, copy = copy, track = track )
#buf = buffer( msg )
#pass;
#img = np.frombuffer(bytes(memoryview(msg)), dtype=md['dtype'])
A = numpy.frombuffer( bytes(memoryview(msg)), dtype = md['dtype'] )
return A.reshape(md['shape'])
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:5667")
time.sleep(0.2)
while True:
frame = recv_array(socket)
print(frame)
socket.close()
I am not retrieving any error but no data is sent from the client to the server. Thanks, help is highly appreciated.