📄 chatroomserver.java
字号:
package day23;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
import java.util.HashSet;
public class ChatRoomServer {
private ServerSocket ss;
private HashSet<Socket> sockets;
public ChatRoomServer(){
try {
ss=new ServerSocket(8888);
sockets=new HashSet<Socket>();
} catch (IOException e) {
e.printStackTrace();
}
}
public void go(){
while(true){
try {
Socket s=ss.accept();
sockets.add(s);
new ChatRoomServerThread(s).start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ChatRoomServerThread extends Thread{
private Socket s;
public ChatRoomServerThread(Socket s){
this.s=s;
}
public void run(){
BufferedReader br=null;
try {
br=new BufferedReader(new InputStreamReader(s.getInputStream()));
String str;
while(true){
str=br.readLine();
if(str.indexOf("%EXIT%")==0){
sockets.remove(s);
s.close();
sendMessage(str.split(":")[1]+"离开聊天室");
break;
}
sendMessage(str);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void sendMessage(String str) throws IOException{
Date date=new Date();
System.out.println(str+date);
for(Socket s_temp:sockets){
PrintWriter pw=new PrintWriter(s_temp.getOutputStream());
pw.println(str+"["+date+"]");
pw.flush();
}
}
public static void main (String[] args){
new ChatRoomServer().go();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -