QTcpServer / QTcpSocket:使用QDataStream与直接发送UTF-8数据

时间:2018-09-04 13:33:47

标签: c++ qt qt5 qtcpsocket qtcpserver

我将使用QTcpServer编写一个小型服务器,该服务器打算通过e连接。 G。 telnet客户端。仅发送文本。

Qt的幸运饼干服务器示例使用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);

1 个答案:

答案 0 :(得分:2)

直接发送UTF-8数据没有任何缺点,但是您需要采取一些方法在接收端分离数据的数据包(单位)。如果全部为文本,则可以通过将接收到的数据拆分为几行来完成。 function seeMore (productID) { window.location = `./productDetails.html?productID=${encodeURIComponent(productID)}`; } 无关紧要,并且在线路级别上,发送已发送字节串的32位长度,后跟那些字节。因此,无论数据包的内容如何,​​数据包的有效载荷有多长都没有任何歧义:甚至可以是0字节长。