2011-02-05 10 views
0

Qtを使ったサーバのアーキテクチャについて質問します。 たとえば、私たちは私がこれを行うためにそこに他の方法であるだろQt TcpServerのアーキテクチャ

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

をできる要求のいくつかの種類がある場合ReadyRead()がソケット信号readyRead() と呼ばれているスロットがあります。私はこれが拡張可能で快適ではないと思う。

私はサーバをJava、C、Perlなどで書かれたクライアントで動作させたいのですが、QByteArrayのみを使うべきでしょうか? QtDemoクライアントのすべてのサンプルで、メッセージの前にメッセージのサイズが送信されます。それは必要ですか?

Qtで書かれたいくつかのサーバ(github、bitbucketなど)を試してみるとよいでしょう。私は、プロダクションサーバーの配置方法を見たいと思っています。

答えて

2

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

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

あなたがそうしていない場合は、最初にexamples in Qt documentationを見ることをお勧めします。しかし、他の例を推奨する必要はありません。

関連する問題