преобразование плавающего буфера в unsigned char * потеря данных при отправке через сокет - PullRequest
0 голосов
/ 15 февраля 2011

Есть ли лучший способ отправки данных с плавающей точкой через сокет? Ниже приведена реализация, которая отправляет данные.

static float theOUTPUT[THE_FLOAT_DATA_BUFFER_SIZE];
int size = 2048;
int tb = 0;
int numbytes = 0;
int cs = 256;
unsigned char* buf = (unsigned char*)theOUTPUT;
while(tb < size) {
    numbytes = send(sock, buf, cs, 0);
    printf("bytes sent: %i\n", numbytes);
    tb+=numbytes;
    buf+=numbytes;
    if(tb >= size) {
        break;
    }
}

Ответы [ 2 ]

0 голосов
/ 16 февраля 2011

Спасибо за ответы.Это был не очень хороший вопрос.Я обнаружил проблему и обнаружил, что отправляю больше данных, чем думал над сокетом.Это то, что портит данные.

@ user470379 Стандарт языка программирования C не имеет отношения к числам с плавающей запятой, но я думаю, что вы это имеете в виду.Если вы строите сервер и клиент, то вы можете контролировать кодирование данных независимо от языка программирования.

0 голосов
/ 15 февраля 2011

В этом коде нет гарантии, что size соответствует sizeof(theOUTPUT).Если его меньше, то вы потеряете данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...