📄 qqserver.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 + -