C++ 使用Qt管理流客户机服务器

C++ 使用Qt管理流客户机服务器,c++,qt,C++,Qt,我想知道客户端服务器管理流的软件有多复杂。 例如,当我玩counter strike时,它们是从客户端到服务器以及从服务器到客户端发送的大量数据包。管理流的最佳方法是什么 我认为: 服务器向客户端发送数据 void服务器::sendcont QString和message { QByteArray-paquet; QDataStream out&paquet,QIODevice::WriteOnly; out>tailleMessage; } 如果套接字->字节可用>类型对象中; 开关型

我想知道客户端服务器管理流的软件有多复杂。 例如,当我玩counter strike时,它们是从客户端到服务器以及从服务器到客户端发送的大量数据包。管理流的最佳方法是什么

我认为:

服务器向客户端发送数据

void服务器::sendcont QString和message { QByteArray-paquet; QDataStream out&paquet,QIODevice::WriteOnly; out>tailleMessage; } 如果套接字->字节可用>类型对象中; 开关型对象{ 案例1: ... 打破 案例2: ... 打破 案例3: ... 打破 ... ... 案例14: QString data;//可以是另一个自定义类 在>>数据中; 书面数据; 打破 //在我的解决方案中,服务器可以根据数据包类型对客户端执行操作 } 数据包大小=0; } 我想我必须在客户端和服务器之间使用一个共享库,并序列化我的自定义类


但我应该做别的吗?使用json或xml或协议缓冲区google或其他东西?

正如@MrEricSir提到的,游戏通常使用UDP协议。它使用数据报,而不是流。因此,一些数据报可能会在数据传输过程中丢失。您应该处理丢失的数据。这种协议通常是二进制的,由于开销的原因,它们不使用xml、json或protobuf。

快节奏的在线游戏通常出于性能原因使用UDP。这里有一篇关于这方面的好文章: