首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

QTcpsocket发送数据的有关问题

2013-09-05 
QTcpsocket发送数据的问题~QTcpSocket如何向服务器发送float类型的数组,数组比较大~~[解决办法]你要自己定

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会把你的数据分成多少个包。
收到包的时候只要根据自己的数据结构拼包,或者处理粘包就可以。
如果你对数据的准确性要求十分高的话,可以在包的结构里加上校验。



热点排行