2016-06-11 18 views
-2

私の名前はJędrzejで、私はここで新しいです。私はjavaで簡単なチャットを書こうとしていました。私は複数のクライアントがこのサーバーに接続できるようにマルチスレッドサーバーを作成しようとしています。私のクライアントは正常に動作しますが、2人のクライアントを実行すると、それぞれのクライアントが応答しなくなります。怒鳴るコード: `Javaネットワーキング、マルチスレッドサーバで何が問題なのかわからない

package serverthread; 

import java.io.IOException; 
import java.net.ServerSocket; 
import java.net.Socket; 

public class ServerWIthThreads { 

    public static void main(String[] args){ 

     try{ 
      ServerSocket serverSocket = new ServerSocket(1234); 
      while(true){ 
       Socket socket = serverSocket.accept(); 
       Runnable r = new ThreadForServer(socket); 
       Thread t = new Thread(r); 
       t.start(); 

      } 
     }catch(IOException e){ 
      e.printStackTrace(); 
     } 
    } 

} 



    package serverthread; 

import java.io.IOException; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.net.Socket; 

public class ThreadForServer implements Runnable{ 

    private Socket socket; 
    private ObjectInputStream inputStream; 
    private ObjectOutputStream outputStream; 
    public ThreadForServer(Socket i){ 

     socket = i; 

    } 

    @Override 
    public void run(){ 

     try{ 
      inputStream = new ObjectInputStream(socket.getInputStream()); 
      outputStream = new ObjectOutputStream(socket.getOutputStream()); 
      outputStream.flush(); 

      while(true){ 
       String message = (String) inputStream.readObject(); 
       outputStream.writeObject(message); 
       outputStream.flush(); 
      } 

     }catch(IOException e){ 

     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } 

    } 



} 

`

答えて

0

あなたはこれを実装してきた方法は、1つのクライアントからのメッセージを読み、当時同じクライアントにそれを書いています。

接続している他のクライアントのSocketにメッセージを書き込むために、プログラムを改訂する必要があります。

+0

高速回答ありがとうございますが、私は何をすべきかまだ分かりません;(サンプルコードを書くことができますか? –

関連する問題