1

「マスター」アプリケーションと多数の「サーバント」との間の tcp 通信を必要とするプロジェクトに取り組んでいます。(プロジェクトは c++ で、私も qt を使用しています)

「サーバント」は何らかの処理を行い、その結果を「マスター」に送信します。これまでのところ、単純なマルチ クライアント サーバー アプリです。

問題は、ランダムな時間に、マスターが使用人に追加の情報を要求し、処理方法を変更するために情報を送信することさえあるということです。

Fortune クライアント/サーバーの例に基づいてプロジェクトを作成した場合、マスターから使用人にメッセージを送信できますか? (方法についてのアイデアはありますか?)

または、何か他のもの (チャット クライアントなど) に基づいて作業する必要がありますか?

TCPクライアント/サーバー通信に関する他の提案は大歓迎ですが、私はすでにqtを使用しているので、他のライブラリを追加したくない....

前もって感謝します!

4

1 に答える 1

5

Qt でサーバーを構築するのは非常に簡単です。QTcpServerを派生させ、いくつかのメソッドまたはスロットを実装する必要があります。これはクライアントにも有効です。QTcpSocketを派生させると、クライアントが作成されます。

たとえば、クライアントの着信を検出するには、virtual void incomingConnection ( int socketDescriptor )を実装します。そのため、クライアントの着信をマップ (すべてのクライアントが独自の ID を持っているため、マップ) に保存できます。

サーバーとクライアントの両方で、おそらくreadyRead()スロットを実装したいと思うでしょう。このスロットは、必要な通信を行います。実際、このスロット内で、サーバーはクライアント メッセージを送受信でき、その逆も可能です。

これは典型的なreadyreadです:

  void Client::readyRead() {
     while (this->canReadLine()) {
            // here you get the message from the server
        const QString& line = QString::fromUtf8(this->readLine()).trimmed();
     }
 }

メッセージの送信方法は次のとおりです。

void Client::sendMessage(const QString& message) {
    this->write(message.toUtf8());
    this->write("\n");
}

それで全部です!

于 2012-12-07T11:58:45.050 に答える