2016-03-20 33 views
2

サーバーとクライアントの2つのクラスを作成しましたが、ソケット入出力ストリームを介してデータを送信しますが、複数のメッセージを送信できません。Javaソケット送信データ

サーバー:私はちょうど持っていないことを確認しかし、新しいメッセージの確認を続行するループを持っている必要がありますので、それが唯一のメッセージを受信し出力する

public class SOK_1_CLIENT { 

    public static void main(String[]args) throws Exception 
    { 
     SOK_1_CLIENT client = new SOK_1_CLIENT(); 
     client.run(); 
    } 

    private void run() throws Exception { 
     Socket SOCK = new Socket("localhost",444); 
     PrintStream ps = new PrintStream(SOCK.getOutputStream()); 
     ps.println("Hello to Server from client"); 

     InputStreamReader ir = new InputStreamReader(SOCK.getInputStream()); 
     BufferedReader br = new BufferedReader(ir); 

     String message = br.readLine(); 

     System.out.println(message); 

    } 

} 

しかし、私はその思い

public class SOK_1_SERVER { 

    public static void main(String[] args) throws Exception 
    { 

     SOK_1_SERVER Sever = new SOK_1_SERVER(); 
     Sever.run(); 
    } 

    private void run() throws Exception { 
     ServerSocket SRVSOCK = new ServerSocket(444); 
     //Waits both client and server to accept and we return 
     //a socket 
     Socket SOCK = SRVSOCK.accept(); 
     //Once accepted 
     InputStreamReader isr = new InputStreamReader(SOCK.getInputStream()); 
     BufferedReader br = new BufferedReader(isr); 

     String message = br.readLine(); 
     System.out.println("I read: " + message + "from Client"); 

     if(message != null) 
     { 
      //Sending message back to client 
      PrintStream ps = new PrintStream(SOCK.getOutputStream()); 
      ps.println("Message Received"); 
      ps.println("Send from Server"); 
     } 
    } 
} 

クライアントこれはソケットを探し始めました。

答えて

1

クライアントクラスでは、bufferedReaderを反復処理する必要があります。代わりに

String message = br.readLine(); 

System.out.println(message); 

使用本の

String message ; 
while((message = br.readLine())!=null) { 
    System.out.println(message); 
} 
+0

あなたは初期化を必要としません。 – EJP

+0

ああ、良いスポット。それを更新しました。 –

関連する問題