0

問題は、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など)のサンプルを提案していただければ幸いです。本番サーバーがどのように配置されているかを確認したいと思います。

4

1 に答える 1

2

各コマンドのペイロードの長さが固定されている場合は、メッセージの長さを送信する必要がない場合があります。

QByteArrayは、unsigned char配列の便利なラッパーであり、いくつかの便利なユーティリティメソッドがあるため、使用することをお勧めします。プロトコルがテキストベースの場合はQStringを使用することもできますが、デフォルトではQStringはUnicodeであるため、文字は1バイトではなく2バイトを使用することに注意してください。適切な変換関数(QString :: fromUtf8、QString :: fromAsciiなど)を使用できます。

まだ行っていない場合は、最初にQtドキュメントの例を確認することをお勧めします。ただし、他に推奨する例はありません。

于 2011-02-05T15:34:57.813 に答える