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

📄 qqserver.java

📁 java的简单的qq聊天软件代码
💻 JAVA
字号:
package chat;


import java.net.*;
import java.io.*;
import java.util.*;
public class QQServer {
public static void main(String[] args) throws Exception{
   ServerSocket ss=new ServerSocket(7000);//8848);
   Map sockets=new HashMap();
   while(true){
    Socket s=ss.accept();
    BufferedReader in=new BufferedReader(
      new InputStreamReader(s.getInputStream()));
    PrintWriter out=new PrintWriter(s.getOutputStream());
   
    String name=in.readLine();
   
    Collection values=sockets.values();
    Iterator it=values.iterator();
    while(it.hasNext()){
     Socket s2=(Socket)it.next();
     PrintWriter out2=new PrintWriter(s2.getOutputStream());
     out2.println("Add:"+name);
     out2.flush();
    }
   
    sockets.put(name, s);
   
    Set names=sockets.keySet();
    it=names.iterator();
    while(it.hasNext()){
     String n=(String)it.next();
     out.println("Add:"+n);
     out.flush();
    }

    Thread t=new ServerThread2(name,s,sockets);
    t.start();
   }
}
}
class ServerThread2 extends Thread{
Socket s;
Map sockets;
String name;
public ServerThread2(String name,Socket s,Map sockets) {
   super();
   this.s = s;
   this.sockets=sockets;
   this.name=name;
}
public void run(){
   try {
    BufferedReader in=new BufferedReader(
      new InputStreamReader(s.getInputStream()) );
    while(true){
     String text=in.readLine();
     if (text==null) return;
   
     StringTokenizer st=new StringTokenizer(text,"%");
     String from=st.nextToken();
     String to=st.nextToken();
    
     if (to.equals("All")){
      Collection values=sockets.values();
      Iterator it=values.iterator();
      while(it.hasNext()){
       Socket s2=(Socket)it.next();
       PrintWriter out2=new PrintWriter(s2.getOutputStream());
       out2.println("Text:"+text);
       out2.flush();
      }    
     }
     else{
      Socket s2=(Socket)sockets.get(to);
      PrintWriter out2=new PrintWriter(s2.getOutputStream());
      out2.println("Text:"+text);
      out2.flush();
     }
    }
   } catch (IOException e) {}
   finally{
    try {
     this.sockets.remove(name);
     Collection values=sockets.values();
     Iterator it=values.iterator();
     while(it.hasNext()){
      Socket s2=(Socket)it.next();
      PrintWriter out2=new PrintWriter(s2.getOutputStream());
      out2.println("Del:"+name);
      out2.flush();
     }
    } catch (IOException e) {
     e.printStackTrace();
    }   
   }
}
}

⌨️ 快捷键说明

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