2010-12-20 15 views
0

私は一度に複数のクライアントをサーバーに接続し、サーバーをすべてのクライアントに通信したいと考えています。 サーバが各クライアントをどのように認識するか。特定のクライアントにデータを送信する方法は?java in tcp session

を考慮すると、3つのクライアントA、B、Cがあります。すべてのクライアントがサーバーに接続されます。サーバーはB.にメッセージを送信したいと思いますか?

+1

あなたの質問は非常に明確ではないthis tutorial about sockets.

を参照してください。なぜ複数回接続しないのですか?私はあなたがそのことを考えていると仮定していると仮定します。その場合、あなたの質問はなぜそれがうまくいかないのか、なぜあなたが達成しようとしているのかを説明してはいけません。 –

+0

ここでの答えは、「接続ごとのスレッドを使用する」(またはNIOを使用するマルチプレックス) – nos

答えて

1

あなたが正しく理解していれば、1回の接続でソケットをバインドする必要はありません。

Clientクラス:

public class TCPClient { 

public TCPClient(String host, int port) { 

     try { 
      clientSocket = new Socket(host, port); 
     } catch (IOException e) { 
      System.out.println(" Could not connect on port: " + port + " to " + host); 
     } 
} 

サーバー(ホスト)クラス:

public class TCPListener { 

    public TCPListener(int portNumber) { 
      try { 
       serverSocket = new ServerSocket(portNumber); 
      } catch (IOException e) { 
       System.out.println("Could not listen on port: " + portNumber); 
      } 
      System.out.println("TCPListener created!"); 
        System.out.println("Connection accepted"); 
      try { 
       while (true) { 
        Socket clientConnection = serverSocket.accept(); 

    //every time client's class constructor called - line above will be executed and new connection saved into Socket class. 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
    } 

最も単純な例である あなたのクライアントコードの意志がそのように見えます。詳細はこちらをご覧ください: http://www.oracle.com/technetwork/java/socket-140484.html

+0

というサーバーが特定のクライアントと通信することになります。どのように可能ですか? –

+0

@Rince Thomas:サーバーには、接続されているクライアントごとに別々の 'Socket'オブジェクトがあります。 – caf

0

私はあなたがこれについてどうやって行くのか分かりません。あなたが後に質問があれば、私はこの答えを更新します、のように...

+0

私はアイデアを持っていますが、私は特定のクライアントにデータを送信するためのコードを取得しませんでした –

+0

これはapache minaを使用してです –

+0

あなたが何を使用するかは関係ありません。新しいクライアント接続はすべて、サーバーで別の受け入れられたソケットによって表されます。あなたの質問は不明なままです。 – EJP