浮点缓冲区转换为unsigned char *丢失套接字发送数据

时间:2011-02-15 01:43:06

标签: c sockets pointers casting network-programming

有没有更好的方法通过套接字发送浮点数据? 以下是发送数据的实现。

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 :(得分:0)

在此代码中,无法保证sizesizeof(theOUTPUT)匹配。如果它更少,那么你将丢失数据。

答案 1 :(得分:0)

感谢您的回答。这不是一个很好的问题。我发现了这个问题,发现我发送的数据比我在socket上发送的数据要多。这破坏了数据。

@ user470379 C编程语言标准与浮点数无关,但我认为这就是你的意思。 如果您构建服务器和客户端,那么无论编程语言如何,您都可以控制对数据进行编码的方式。