2014-04-10 86 views
0

我有一個程序準備好充當客戶端,另一個充當服務器。MultiClient服務器 - Java

我希望能夠向服務器發送消息,服務器然後將該消息轉發給另一個也連接到服務器的客戶端。

所以服務器應該轉發消息給其他客戶端。

我將如何做到這一點,我需要讀什麼?

這就是我現在得到的。

Server.java

package server; 

import java.net.*; 
import java.io.*; 

import javax.swing.*; 

public class Server{ 

public static void run() { 
    ServerSocket serverSocket = null; 
    Socket socket = null; 
    try{ 
     while(true){ 
      serverSocket = new ServerSocket(5555); 
      socket = serverSocket.accept(); 
      InputStreamReader streamReader = new InputStreamReader(socket.getInputStream()); 
      BufferedReader bufferedReader = new BufferedReader(streamReader); 
      String message = bufferedReader.readLine(); 
      System.out.println(message); 
      if(message != null){ 
       PrintStream printStream = new PrintStream(socket.getOutputStream()); 
       printStream.println("Message receivd!"); 
      } 
      streamReader.close(); 
      socket.close(); 
      serverSocket.close(); 
      bufferedReader.close(); 
     } 
    }catch(Exception e){} 
//  try{ 
//   
//  }catch(Exception e){} 
    } 
    public static void main(String[]args){ 
    Server s = new Server(); 
    s.run(); 
} 

}

然後,我也得到了TCPClient.java

package client; 

import java.net.*; 
import java.io.*; 

public class TCPClient { 
private String serverIP = "localhost"; 
private int serverPort = 1111; 
private int count = 0; 
private Thread thread; 

public TCPClient() { 
    this.thread = new Thread(new ConnectAndListenToServer()); 
    //  thread.start(); 
} 
public void sendMessage(int count){ 
    this.count = count; 
    this.thread = new Thread(new ConnectAndListenToServer()); 
    thread.start(); 
} 
private class ConnectAndListenToServer implements Runnable { 
    Socket socket = null; 
    public void run() { 
     BufferedReader bufferedReader = null; 
     InputStreamReader streamReader = null; 
     try { 
      socket = new Socket(serverIP,serverPort); 
      PrintStream printStream = new PrintStream(socket.getOutputStream()); 
      printStream.println(count); 
      streamReader = new InputStreamReader(socket.getInputStream()); 
      bufferedReader = new BufferedReader(streamReader); 
      String message = bufferedReader.readLine(); 
      if(message != null){ 
       System.out.println(message); 
      } 

     }catch(Exception e){} 
     try{ 
      socket.close(); 
      bufferedReader.close(); 
      streamReader.close(); 
     }catch(Exception ee){} 
    } 
} 

}

我怎麼會是能夠轉發已收到的messeage在服務器上另一個客戶端?

Example

+0

您需要使用'ServerSocket'和'Socket'類。我想你想通過TCP發送消息。 – PetrS

回答

2

我將如何能夠將服務器上已收到的信息轉發給其他客戶端?

我已經在相同的上下文中發佈了一些樣本。

直到現在你已經做得很好,完成它請看看Client-Server Communication。我已經逐步描述了它,只需按照該線程查找其他示例。

請讓我知道如果你仍然有任何問題!

0

,如果你有Client 2連接,而Client 1也連接這只是工作。

這是可能的,如果你寫一個多線程應用程序或使用Selector