2016-06-11 22 views
-2

我的名字是Jędrzej,我是新來的。我試圖用java寫一個簡單的聊天。我正在嘗試製作多線程服務器,以便多個客戶端可以連接到此服務器。我的客戶工作正常,但如果我運行兩個客戶,他們不會看到其他人的迴應。代碼波紋管:`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

你已經實現了這個問題的方法,你正在閱讀從一個客戶機的消息,然後寫它回相同客戶端。

您需要修改程序,以便您可以將消息寫入其他連接客戶端的Socket

+0

感謝您的快速回答,但我仍然不確定該怎麼辦;(您能寫一個示例代碼嗎? –