import java.net.*;
import java.util.Scanner;
public class Client{    public static void main(String[] args) throws Exception{           Socket client=new Socket("localhost",8888);
           Scanner sc=new Scanner(System.in);
           System.out.print("请输入您的姓名: ");
   String name=sc.next();  
           Thread cSent=new Thread(new ClientSentThread(client,name));
           Thread cRevert=new Thread(new ClientRevertThread(client));
           cRevert.start();
           cSent.start();
           cSent.join();
    }
}/*******************************************************************************************/import java.net.*;
import java.util.*;
public class Server{    public static void main(String[] args) throws Exception{
           ServerSocket server=new ServerSocket(8888);
           System.out.println("服务器已开启,等待用户连接中........");
           Socket client=null;
           LinkedList<Socket> list=new LinkedList<Socket>();
   boolean =true;
           while(){
                   client=server.accept();
   list.add(client);
                   System.out.println("注意: 发现一个新的客户端!");
   new Thread(new ServerThread(list,client)).start();
           }
   server.close();
    }
}/*******************************************************************************************/import java.net.*;
import java.io.*;
import java.util.*;
public class ServerThread implements Runnable{
    private LinkedList<Socket> clientList;
    private Socket client;
    public ServerThread(LinkedList<Socket> clientList,Socket client){
          this.client=client;
          this.clientList=clientList;
    }
    public void run(){
       try{
         //DataInputStream in=new DataInputStream(new BufferedInputStream(client.getInputStream()));
         BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
         boolean =true;
         while(){
              //String message=in.readUTF();
      String message=in.readLine();
              int sign=message.indexOf(":")+2;
              if("stop".equalsIgnoreCase(message.substring(sign))){
                    sent("注意:"+message.substring(0,sign)+"离开了聊天室!");
                    break;
              }
              sent(message);
              System.out.println("Server端收到信息:  "+message+"    已转发给所有的用户!");
         }
         clientList.remove(client);
in.close();
       }catch(Exception e){e.printStackTrace();}
    }
    private void sent(String message) throws Exception{
         Iterator<Socket> iList=clientList.iterator();
         //DataOutputStream out=null;
         BufferedWriter out=null;
         while(iList.hasNext()){
               //out=new DataOutputStream(new BufferedOutputStream(iList.next().getOutputStream()));
               out=new BufferedWriter(new OutputStreamWriter(iList.next().getOutputStream()));
               out.write(message);
               //out.writeUTF(message);
               out.flush();
         }
    }
}/*******************************************************************************************/import java.net.*;
import java.io.*;
public class ClientRevertThread implements Runnable{
       private Socket client;
       public ClientRevertThread(Socket client){
             this.client=client;
       }
       public void run(){
           try{
                //DataInputStream in=new DataInputStream(new BufferedInputStream(client.getInputStream()));
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
String message=null;
                do{
//message=in.readUTF();
message=in.readLine();
if(message!=null)
                           System.out.println(message);
                }while(message!=null);
                in.close();
           }catch(Exception e){ e.printStackTrace();}
       }
}
import java.net.*;
import java.io.*;
public class ClientRevertThread implements Runnable{
       private Socket client;
       public ClientRevertThread(Socket client){
             this.client=client;
       }
       public void run(){
           try{
                //DataInputStream in=new DataInputStream(new BufferedInputStream(client.getInputStream()));
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
String message=null;
                do{
//message=in.readUTF();
message=in.readLine();
if(message!=null)
                           System.out.println(message);
                }while(message!=null);
                in.close();
           }catch(Exception e){ e.printStackTrace();}
       }
}/*******************************************************************************************/import java.net.*;
import java.io.*;
import java.util.Scanner;
public class ClientSentThread implements Runnable{
       private Socket client;
       private String name="游客";
       public ClientSentThread(Socket client,String name){
             this.client=client;
             if(name!=null && name.length()<=6 && name.length()>0)
                     this.name=name;
       }
       public void run(){
           try{
                //DataOutputStream out=new DataOutputStream(new BufferedOutputStream(client.getOutputStream()));
BufferedWriter out=new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
                Scanner sc=new Scanner(System.in);
                boolean =true;
                while(){
                     String message=sc.nextLine();
                     out.write(name+": "+message);
                     //out.writeUTF(name+": "+message);
                     out.flush();
                     if("stop".equalsIgnoreCase(message))
                             break;
                }
                out.close();
           }catch(Exception e){ e.printStackTrace();}
       }
}/*******************************************************************************************/客户端和服务器端运行后,message=in.readUTF();  相对应的程序,可以在服务器端接收信息。
  message=in.readLine(); 相对应的程序,在服务器端接收不到信息。请求大家帮助,谢谢啦