2

私のアプリケーションでは、複数のPCがサーバーに接続します。サーバーはメッセージを受信して​​からシステムに送信します。システムはサーバーにメッセージを送り返す場合があり、このメッセージはサーバーによってPCに送信される必要があります。基本的には次のようになります。

PC0-------------------->サーバー---->PCメッセージをシステムに送信します。
システム------>PC0サーバーにメッセージを送信---->PC0

PC 1、2、3などでも同じです。

しかし、どうすればこれを行うことができますか?次のように、PCメッセージをサーバーに、サーバーをシステムに取得できます。

これはServerThreadから実行されています:

try {

    Socket socket = serverSocket.accept();

    if (socket != null) {

        clientList.add(new ClientThread(socket));
    }

} catch (IOException ex) {

    System.out.println(DEBUG
            + ": Failed creating client socket / "
            + ex.getMessage());
}

しかし、着信ソケットがサーバーにメッセージを送信することを意図しているのか、それともソケットがPCにメッセージを送信する必要があるのか​​をどうやって知ることができますか?

4

2 に答える 2

2

基本的に、システムが(PC0とともに...)別のエンドポイントであるインスタントメッセージングを実装しています。サーバーが単にメッセージルーターとして使用されている場合は、XMPPのようなものを使用してみませんか。

クライアントソリューションにはSmackを使用でき、既成のXMPPサーバーはニーズに簡単に適合します。サーバーをカスタマイズする必要がある場合は、OpenfireなどのJavaベースのサーバーの1つを選択できます。

于 2012-06-26T16:19:52.447 に答える
0

このアプローチはと呼ばれproxyます。クライアント(質問のPC)とサーバー(システム)を区別するには、クライアントから受け入れられた接続と、サーバーへの接続を分離し、相互参照する必要があります(最も簡単なのは1対1です)。マッピング)。クライアント接続でメッセージを取得し、オプションで変換/フィルター処理し、対応するサーバー接続で送信します。その逆も同様です。

于 2012-06-26T18:19:13.050 に答える