gpt4 book ai didi

c++ - Qt TcpServer架构

转载 作者:行者123 更新时间:2023-11-28 03:52:39 25 4
gpt4 key购买 nike

问题是关于带有 Qt 的服务器的体系结构。例如,当套接字发出 readyRead() 信号时,将调用一个插槽 ReadyRead()如果有多种请求我们可以

void Server::ReadyRead()
{
QString msg = readFirstWordFromAvaiableData();
switch (msg){
case "PING":
case "GET": // and so on
}
}

我想知道有没有其他方法可以做到这一点。我猜这不是可扩展和舒适的。

如果我想让服务器与用 Java、C、Perl 等编写的客户端一起工作,我应该只使用 QByteArray,对吗?在来自 QtDemo 的所有示例中,客户端在消息之前发送消息的大小。有必要吗?

如果您建议我对一些用 Qt 编写的服务器(在 github、bitbucket 等上)进行示例,那就太好了。我想看看生产服务器是如何安排的。

最佳答案

如果您的每个命令都有固定长度的有效负载,则可能不需要发送消息长度。

QByteArray 是一个方便的 unsigned char 数组包装器,并且有一些有用的实用方法,所以使用它是一件好事。如果您的协议(protocol)是基于文本的,您也可以使用 QString,但请注意默认情况下 QString 是 Unicode,因此一个字符占用 2 个字节而不是一个字节。您可以使用适当的转换函数(QString::fromUtf8、QString::fromAscii 等)。

我首先建议看一下 examples in Qt documentation如果你还没有这样做。不过没有任何其他示例可以推荐。

关于c++ - Qt TcpServer架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4907401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com