实现功能:
1.显示用户上下线信息
2.发送信息后全部人可见
3.特定格式的信息可以实现私信功能
服务器端
package com.chat;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.swing.text.MaskFormatter;
public class Server {
private ServerSocket server; //与用户连接的socket套接字
private Map<String,PrintWriter> pws; //用户名字为唯一标识符,与对应的输出流做映射关系
/*初始化socket和Map*/
public Server() {
try {
server = new ServerSocket(8091);
pws=new HashMap<String, PrintWriter>();
} catch (Exception e) {
e.printStackTrace();
}
}
/*存储用户名字-输出流映射*/
public void savePw(String name,PrintWriter pw){
if(pw==null){
return;
}
pws.put(name, pw);
}
/*向全部用户发送数据*/
public void sendToAll(String msg){
if(msg==null||msg.trim().length()==0){
return;
}
Set<String> names=pws.keySet(); //获取用户名字集
for(String name:names){ //遍历名字集,获取对应的用户输出流发送数据
PrintWriter pw=pws.get(name);
pw.println(msg);
}
}
//私信功能,server接受到的格式为senderName:@receiverName:msg
public boolean s