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

📄 chatserver.java

📁 一个简单的Java聊天程序
💻 JAVA
字号:
import java.io.*;
import java.net.*;
import java.util.*;
public class ChatServer 
{  
  public static void main(String args[])
    {
     ServerSocket server=null;
     Socket you=null;
     Hashtable peopleList;                                
     peopleList=new Hashtable(); 
     while(true) 
            {
             try
                  { 
                    server=new ServerSocket(6666);
                  }
             catch(IOException e1) 
                  {
                     System.out.println("正在监听");
                  } 
             try  {
                     you=server.accept();                 
                     InetAddress address=you.getInetAddress();
                     System.out.println("用户的IP:"+address);
                     
                  }
             catch (IOException e)
                  {
                  }
             if(you!=null) 
                  {  
                     Server_thread peopleThread=new Server_thread(you,peopleList);
                     peopleThread.start();               
                  }
             else {
                    continue;
                  }
           }
  }
}
class Server_thread extends Thread
{  
   String name=null,sex=null;                            
   Socket socket=null;
   File file=null;
   DataOutputStream out=null;
   DataInputStream  in=null;
   Hashtable peopleList=null;
   Server_thread(Socket t,Hashtable list)
       { 
         peopleList=list;
         socket=t;
         try {
               in=new DataInputStream(socket.getInputStream());
               out=new DataOutputStream(socket.getOutputStream());
             }
         catch (IOException e)
             {
             }
        }  
 public void run()        
  {  
     
     while(true)
      {    String s=null;   
        try
           {
            s=in.readUTF();                       
            if(s.startsWith("姓名:"))             
              {
                name=s.substring(s.indexOf(":")+1,s.indexOf("性别"));  
                sex=s.substring(s.lastIndexOf(":")+1);          
                
              
                boolean boo=peopleList.containsKey(name);
                if(boo==false) 
                  {
                    peopleList.put(name,this);          
                    out.writeUTF("可以聊天:");
                    Enumeration enum=peopleList.elements();   
                     while(enum.hasMoreElements())            
                     {
                       Server_thread th=(Server_thread)enum.nextElement();
                       th.out.writeUTF("聊天者:"+name+"性别"+sex);  
                       
                       
                       if(th!=this)
                         {
                           out.writeUTF("聊天者:"+th.name+"性别"+th.sex);
                         } 
                     } 
                     
                  }
                else
                  {
                    out.writeUTF("不可以聊天:");
                  }
              }
            else if(s.startsWith("公共聊天内容:")) 
              {
                 String message=s.substring(s.indexOf(":")+1);
                 Enumeration enum=peopleList.elements();    
                 while(enum.hasMoreElements())
                     {
                       ((Server_thread)enum.nextElement()).out.writeUTF("聊天内容:"+message);
                     }  
              }
          
            else if(s.startsWith("用户离开:"))
              {
                 Enumeration enum=peopleList.elements();    
                 while(enum.hasMoreElements())             
                   { try
                     {
                        Server_thread th=(Server_thread)enum.nextElement();
                        if(th!=this&&th.isAlive())
                         {
                           th.out.writeUTF("用户离线:"+name);
                         }
                     }
                   catch(IOException eee)
                     {
                     }
                   } 
                peopleList.remove(name); 
                socket.close();                        
                System.out.println(name+"用户离开了");
                break;                                 
              }
            else if(s.startsWith("私人聊天内容:"))
              {
                 String 悄悄话=s.substring(s.indexOf(":")+1,s.indexOf("#"));
                 String toPeople=s.substring(s.indexOf("#")+1);
                 
                 Server_thread toThread=(Server_thread)peopleList.get(toPeople);
                 if(toThread!=null)
                   {
                    toThread.out.writeUTF("私人聊天内容:"+悄悄话);
                   }
                 else  
                   {
                     out.writeUTF("私人聊天内容:"+toPeople+"已经离线");
                   }
              }
           }
       catch(IOException ee)   
           {
               Enumeration enum=peopleList.elements();    
                 while(enum.hasMoreElements())             
                   { try
                     {
                        Server_thread th=(Server_thread)enum.nextElement();
                        if(th!=this&&th.isAlive())
                         {
                           th.out.writeUTF("用户离线:"+name);
                         }
                     }
                   catch(IOException eee)
                     {
                     }
                   } 
                peopleList.remove(name); 
                 try
                    { 
                      socket.close();
                    }                    
                catch(IOException eee)
                    {
                    }
                              
              System.out.println(name+"用户离开了");
              break;                                 
           }             
     } 
  }
}


⌨️ 快捷键说明

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