我正准备使用 QTcpServer
编写一个小型服务器,旨在通过 e 进行连接。 G。远程登录客户端。只会发送文本。
Qt 的幸运 cookies 服务器示例使用 QDataStream
通过以下代码使用 QTcpSocket
发送文本:
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_5_10);
out << "Some Text";
socket->write(block);
如果不想发送二进制数据,像这样直接发送 Unicode 数据(每个相关人员都知道我们使用的是 UTF-8)有什么缺点吗:
socket->write(QString::fromUtf8("Some text").toUtf8);
?
最佳答案
直接发送 UTF-8 数据没有缺点,但是您需要有一些方法来在接收端分离数据包(单元)。如果全是文本,则可以通过在接收端将传入数据拆分成行来完成。 QDataStream
不关心其中的任何内容,并且在线路级别发送已发送字节串的 32 位长度,后跟这些字节。因此,无论数据包的内容如何,数据包的有效负载长度永远不会有任何歧义:它甚至可以是 0 字节长。
关于c++ - QTcpServer/QTcpSocket : Using a QDataStream vs. 直接发送UTF-8数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52167574/