⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chatroomserver.java

📁 j2se实现聊天室linux平台 gcc1.2.2以上编译
💻 JAVA
字号:
import java.net.*;
import java.io.*;
import java.util.*;

//ChatRoomServer ,BManager,Chat_Thread,synchronized

  public class ChatRoomServer{
    private ServerSocket server;
    private BManager bMan=new BManager();

    public ChatRoomServer(){}
//startServer
    public void startServer(){
            try{
                server = new  ServerSocket(7777);
                System.out.println("服务器套接字创建完毕");
                while(true){
                          Socket socket=server.accept();
                          new  Chat_Thread(socket).start();
                          bMan.add(socket);
                          bMan.sendClientInfo();
                           }
               }  
            catch(Exception e){System.out.println(e);}
   }
//main
    public static void main(String[] args){
         ChatRoomServer server=new ChatRoomServer();
              server.startServer();
   }
//  Chat_Thread 
    public class Chat_Thread extends Thread{
           Socket socket;
           private BufferedReader reader;
           private PrintWriter writer;
      public Chat_Thread(Socket socket){
          this.socket=socket;
                }
 
    public void run(){
            try{
                reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
                writer=new PrintWriter(socket.getOutputStream(),true);
                String msg;
               while((msg=reader.readLine())!=null){
                        System.out.println(msg);
                        bMan.sendToAll(msg);
                      }              


               }
            catch(Exception e){System.out.println(e);}
            finally{
                   try{
                        bMan.remove(socket);
                        if(reader!=null){reader.close();}
                        if(writer!=null){writer.close();}
                        if(socket!=null){socket.close();}
                        writer=null;reader=null;socket=null;
                        System.out.println("客户机离开!");
                        bMan.sendClientInfo();
                      }
                   catch(Exception e){System.out.println(e);}                  

                   }
      }
    }
 //  BManager 
    public class BManager extends Vector{
     public BManager(){};
     public void add(Socket sock){
                                   super.add(sock);                            
                                  }
     public void remove(Socket sock){
                                   super.remove(sock);    
                                    }
     public synchronized void sendToAll(String msg){
               PrintWriter writer=null;             
               Socket socket;
                 for(int i=0;i<size();i++){
                  socket=(Socket)elementAt(i);
                  try{
                     writer=new PrintWriter(socket.getOutputStream(),true);
                       }                       
                  catch(IOException ie){}
                 if(writer!=null){writer.println(msg);}
                                          }
                                        

                                                   }
     public synchronized void sendClientInfo(){
                                       String info="当前聊天人数:"+size();
                                       System.out.println(info);
                                       sendToAll(info);
                                              }

    }
   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -