需求
最近在做一个 tcp demo 的时候,发现直接 read
没有问题,但是当使用
QDataStream
的 commitTransaction
来读取,返回的就是 false 这个就比较奇怪。
解决
通过 wireshark
抓包,发现 server
数据是已经发出来了,只是 client
解析错误。重新检查发送部分的代码,经过调整后,发现,向 QDataStream
里面写数据的时候,只能写 QString
, 如果直接写字符串,就会读取错误。直接对比两种情况的打印,也发现,确实两种情况下,保存到 QByteArray
中的数据是不一样的。
参考
Question about QDataStream and its functions startTransaction and commitTransaction