QTcpsocket发送数据的问题~
QTcpSocket如何向服务器发送float类型的数组,数组比较大~~
[解决办法]
你要自己定义一个包的结构:
typedef struct packet
{
int packet_header;
int dataLen;
float data[];
}NET_PACKET;
QTcpSocket *scocket = new QTcpSocket();
......
NET_PACKET *p = (NET_PACKET*)malloc(8+dataLen);
p->packet_header = xxxxxx;
p->dataLen = your_array_len;
memcpy(p->data, your_data, sizeof(your_array_len));
socket->write((char *)p, 8+dataLen);
free(p);
然后就可以了
如果你的数据很大的话,发送的时候可能会分成N个包发出去。
tcp协议会保证每个包对端都会收到,而且顺序是对的。
之所以要自定义包的结构,而不是直接发个裸数据,是因为你不知道tcp会把你的数据分成多少个包。
收到包的时候只要根据自己的数据结构拼包,或者处理粘包就可以。
如果你对数据的准确性要求十分高的话,可以在包的结构里加上校验。