c++ - QTcpServer/QTcpSocket : Using a QDataStream vs. 直接发送UTF-8数据

标签 c++ qt qt5 qtcpsocket qtcpserver

我正准备使用 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/

相关文章:

c++ - C++中的netcat命令

c++ - QClipboard 和 selectedText() 在 QTextEdit 中不相等

c++ - 如何限制QInputDialog::getText的内容

c++ - Qt连接: Using Lambda Expression Resets Passed int Variable (Weird)

c++ - 不同类型的C/C++头文件有什么区别

c++ - "Hello world!"在 C++ 中卡住

qt - 防止 QScintilla 中触发键盘快捷键(示例代码)

c++ - 良好的编程习惯?

c++ - C++ 中的相对地址与物理地址

linux - gl.h : No such file or directory, 我似乎无法消除这个错误