2011-09-11 47 views
-1
package chatserver; 
import java.net.*; 
import java.io.*; 
public class ChatServer implements Runnable 
{ 
    static ServerSocket server; 
    static Socket sc; 
    private static OutputStream ops; 
    private static InputStream ips; 
    private static DataOutputStream dos; 
    private static DataInputStream dis; 
    private static String conversation =""; 
    ChatServer() throws IOException 
    { 
      server = new ServerSocket(5000); 
      System.out.println("Chat Server Started .... "); 
      new Thread(this).start(); 

    } 
public void run() 
{ 
try 
    { 
     while(true) 
     { 
      sc = server.accept(); 
      ops = sc.getOutputStream(); 
      ips = sc.getInputStream(); 
      dos = new DataOutputStream(ops); 
      dis = new DataInputStream(ips); 
      String st = new String(dis.readUTF()); 
      conversation = conversation + "\n"+st; 
      System.out.println(conversation); 
      send_to_all(); 
      dos.close(); 
      ops.close(); 
      sc.close(); 
     } 
    } 
    catch(IOException ie){} 
} 
private void send_to_all() throws IException 
{ 
    dos.writeUTF(conversation); 
} 
public static void main(String[] args) throws IOException 
{ 
    new ChatServer(); 
    InetAddress sl = server.getInetAddress(); 
    System.out.println("Address : "+sl); 
} 
} 
+0

有人能告訴我該怎麼辦,將所有客戶的接收消息發回給所有的客戶! ??更確切地說,我應該添加到send_to_all()函數中? –

+4

請編輯您的問題,刪除所有當前內容,然後粘貼您的代碼,選擇所有內容並使用'{}'按鈕獲得正確的語法高亮顯示。還要在問題本身**中描述**完全**您的問題/問題是什麼(您得到什麼錯誤,哪些工作不正確等) – Mat

+0

請您告訴我們您遇到什麼錯誤? – venomrld

回答

0

如果您希望能夠發送某些連接的客戶端,您必須(至少)維護一個連接的客戶端列表。

不要推倒重來,偷看你所需要的是什麼:Building a Java chat server
見第22頁,Server類,方法sendToAll(String message)

祝你好運!

相關問題