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