Вот мой код:RECV возвращение после 0x0000 байт найден
Client
Position pos(1.0,2.0,0.45); feedback feed(12, pos, 100); msgpack::sbuffer sbuf; msgpack::pack(sbuf, feed); int test = write(tcp_client.sockfd, sbuf.data(),sizeof(sbuf));
Сервер:
char* buffer = new char[41]; int test = recv(TCP_server.newsockfd, buffer, 40, MSG_WAITALL); for (int i=0; i< sizeof(buffer); i++) std::cout << std::hex << (int)buffer[i] << " "; std::cout << std::endl;
Для других частей кодов, соединение установлено, и данные успешно переданы.
Сейчас проблема заключается в том, что я получил следующий вывод:
Клиент:
ffffff94 b c ffffff93 ffffffca 3f ffffff80 0 0 ffffffca 40 0 0 0 ffffffca 3e ffffffe6 66 66 64
Сервер:
ffffff94 b c ffffff93 ffffffca 3f ffffff80 0
Есть ли причина, почему полученные данные прекратились после столкнувшись с первым символом 0x0000? когда я отправляю строку, все работает нормально, но не в этом конкретном случае.
Для записей, то recv() doc не очень помогает ...
'SizeOf (буферные)' - Как вы считаете, это значение? – PaulMcKenzie
Возвращаемое значение 'recv' должно использоваться для определения того, насколько далеко зацикливается. – PaulMcKenzie
Не используйте форматирование кода для текста, который не является кодом. – EJP