Я использую сервер C++ и несколько клиентов Python с библиотекой zmq
( ZeroMQ ). Я хочу отправить клиентам float
и integer
.
Я прочитал руководство для zmq
, но у меня возникла проблема с отправкой чего-либо, кроме char array
из кода C++, который не может быть интерпретирован клиентом python
как integer
или float
.
Мой код C++ выглядит так:
// Socket to talk to clients
void *context = zmq_ctx_new();
void *responder = zmq_socket(context, ZMQ_REP);
int rc = zmq_bind(responder, "tcp://*:5555");
int msg_cnt = 0;
while (1) {
char data[] = "M3:155";
sendCommand(responder, data);
}
static void sendCommand(void* r, char* cmd) {
static int n;
char buffer[10];
zmq_recv(r, buffer, 10, 0);
zmq_send(r, cmd, sizeof(cmd), 0);
std::cout << std::to_string(n++) << ". command sent." << std::endl;
Sleep(1);
}
И клиент python выглядит примерно так:
context = zmq.Context()
# Socket to talk to server
print("Connecting to hello world server")
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")
#print("Sending request %s ")
socket.send(b"I am here.")
# Get the reply.
message = socket.recv()
#message = b"M5:-"
print("Received reply [%s]" % (message))
match = re.match(b'.*(M\d+):(\d+)', message)
print ("Command is: ", match.group())
print ("Motor: ", match.group(1))
print ("Target Angle: ", match.group(2))
Вывод для Python:
Получен ответ [b'M3:155\x00\xcc']
Команда: b'M3:155'
Мотор: b'M3'
Угол цели: b'155'
Как я могу разобрать b'155'
как int
или float
?
Заранее спасибо!