📄 chatroomserver.java
字号:
import java.net.*;
import java.io.*;
import java.util.*;
//ChatRoomServer ,BManager,Chat_Thread,synchronized
public class ChatRoomServer{
private ServerSocket server;
private BManager bMan=new BManager();
public ChatRoomServer(){}
//startServer
public void startServer(){
try{
server = new ServerSocket(7777);
System.out.println("服务器套接字创建完毕");
while(true){
Socket socket=server.accept();
new Chat_Thread(socket).start();
bMan.add(socket);
bMan.sendClientInfo();
}
}
catch(Exception e){System.out.println(e);}
}
//main
public static void main(String[] args){
ChatRoomServer server=new ChatRoomServer();
server.startServer();
}
// Chat_Thread
public class Chat_Thread extends Thread{
Socket socket;
private BufferedReader reader;
private PrintWriter writer;
public Chat_Thread(Socket socket){
this.socket=socket;
}
public void run(){
try{
reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer=new PrintWriter(socket.getOutputStream(),true);
String msg;
while((msg=reader.readLine())!=null){
System.out.println(msg);
bMan.sendToAll(msg);
}
}
catch(Exception e){System.out.println(e);}
finally{
try{
bMan.remove(socket);
if(reader!=null){reader.close();}
if(writer!=null){writer.close();}
if(socket!=null){socket.close();}
writer=null;reader=null;socket=null;
System.out.println("客户机离开!");
bMan.sendClientInfo();
}
catch(Exception e){System.out.println(e);}
}
}
}
// BManager
public class BManager extends Vector{
public BManager(){};
public void add(Socket sock){
super.add(sock);
}
public void remove(Socket sock){
super.remove(sock);
}
public synchronized void sendToAll(String msg){
PrintWriter writer=null;
Socket socket;
for(int i=0;i<size();i++){
socket=(Socket)elementAt(i);
try{
writer=new PrintWriter(socket.getOutputStream(),true);
}
catch(IOException ie){}
if(writer!=null){writer.println(msg);}
}
}
public synchronized void sendClientInfo(){
String info="当前聊天人数:"+size();
System.out.println(info);
sendToAll(info);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -