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

📄 qqserver.java

📁 简易的QQ聊天程序 里面只有两个文件 server.java client.java 供初学者研究学习
💻 JAVA
字号:
import java.net.*;
import java.io.*;
import java.util.*;
public class QQServer {
	public static void main(String[] args) {
		ServerSocket ss=null;
		Map users=new HashMap();
		try {
			ss = new ServerSocket(7755);
		} catch (IOException e) {
			e.printStackTrace();
		}
		while(true){
			try {
				Socket s=ss.accept();
				Thread t=new ServerThread(s,users);
				t.start();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}

class ServerThread extends Thread{
	Socket s;
	String userName;
	Map users;
	BufferedReader in;
	PrintWriter out;
	
	public ServerThread(Socket s,Map m){
		this.s=s;
		this.users=m;
		try {
			this.in=new BufferedReader(new InputStreamReader(s.getInputStream()));
			this.out=new PrintWriter(s.getOutputStream());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
	public void run(){
		while(true){
			try {
				String str=in.readLine();
				if (str==null) break;
				String[] info=parseString(str);
				if (info[0].equals("1")){
					this.userName=info[1];
					send(str,"All");
					this.users.put(userName,out);
					Iterator it=users.keySet().iterator();
					while(it.hasNext()){
						String user=(String)(it.next());
						send("1:"+user+":",userName);
					}
				}
				else if (info[0].equals("2")){
					send(str,"All");
					this.users.remove(info[1]);
					break;
				}
				else{
					String text="3:"+this.userName+":"+info[2];
					send(text,info[1]);
				}
			}  catch (Exception e) {
			//	e.printStackTrace();
				return;
			}
		}
		
	}
	private String[] parseString(String s){
		String[] ss=new String[3];
		int i=0;
		StringTokenizer st=new StringTokenizer(s,":");
		
		while(st.hasMoreTokens()){
			ss[i]=st.nextToken();
			i++;
		}
		return ss;
	}
	private void send(String text,String receiver) throws Exception{
		PrintWriter o;
		if (receiver.equals("All")){
			Iterator it=users.keySet().iterator();
			while(it.hasNext()){
				String s=(String)(it.next());
				o=(PrintWriter)(users.get(s));
				o.println(text);
				o.flush();
			}
		}
		else{
			o=(PrintWriter)(users.get(receiver));
			o.println(text);
			o.flush();
		}
	}
}

⌨️ 快捷键说明

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