qt中,使用UDP收发数据的时候,只能存最后一行数据?

图片说明
图片说明
这是发送设备的代码 读取一个txt文件,读一行发一行,使用UDP进行传输。
使用另一台设备接收并将数据保存,使用的是readyread触发slot函数,slot函数中使用while(socket->hasPendingDatagrams())进行判断并读取和储存,但是打开保存的txt文档后, 只有存了发送数据的最后一行。
请各位帮忙分析一下 感激不尽。

另外 当接收设备的qt使用dubug在循环中一步一步读的时候,保存的数据是完整的,不debug直接运行的话,只能保存最后一行。

最近刚接触qt,在将数据写入文件的时候遇到过这种情况,我的情况是采用信号槽的方法,
当触发信号连接槽时打开文件将数据写入文件,发现只有最后一次的数据写入文件,后面发现
是因为每次重复打开文件,后面来的数据会覆盖掉前面已经写入的数据,解决办法是在每次打开文件的时候
改成 file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append);在文件后面追加写入数据
,这样就不会覆盖掉前面的数据了。希望能给你点帮助,也不知道行不行,刚接触qt。

建议在发送完emit sig_SendDynamicTrajectory(line)后,加上一个Sleep(10),这样可以让cpu调度执行保存的线程,如果不想要这样操作的话,也可以使用线程安全的queue,将文件保存到缓存中,然后从缓存的queue中读取数据并写入文件,这个对于多线程是非常好用的。