⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.java

📁 该代码用JAVA语言编写了一个聊天室
💻 JAVA
字号:
import java.io.*; 
import java.net.*; 
import java.util.*; 

public class Server { 
	
	boolean started = false; 
	ServerSocket ss = null; 
	
	List<Client> clients = new ArrayList<Client>(); 
	
	
	/*
	 * 服务器main函数
	 * 启动服务器
	 */
	public static void main(String[] args) { 
		Server chat = new Server();
		chat.start(); 
	} 
	
	
	//启动服务器
	public void start() { 
		try { 
			
			ss = new ServerSocket(1234); 
			started = true; 
		} catch (BindException e) { 
			//如果端口已被别的程序使用请关掉程序后重新运行服务器程序
			System.out.println("端口使用中...."); 
			System.out.println("请关掉相关程序并重新运行服务器!"); 
			System.exit(0); 
		} catch (IOException e) { 
			e.printStackTrace(); 
		} 
			
		try { 
			
			while(started) { 
				Socket s = ss.accept(); 
				Client c = new Client(s); 
				System.out.println("a client connected!"); 
				new Thread(c).start(); 
				clients.add(c); 
			} 
		} catch (IOException e) { 
			e.printStackTrace(); 
		} finally { 
			try { 
				ss.close(); 
			} catch (IOException e) { 
				e.printStackTrace(); 
			} 
		} 
	} 
	
	
	/*
	 * 用户线程
	 */
	class Client implements Runnable { 
		
		private Socket s; 
		private DataInputStream dis = null; 
		private DataOutputStream dos = null; 
		private boolean bConnected = false; 
		
		public Client(Socket s) { 
			this.s = s; 
			try { 
				dis = new DataInputStream(s.getInputStream()); 
				dos = new DataOutputStream(s.getOutputStream()); 
				bConnected = true; 
			} catch (IOException e) { 
				e.printStackTrace(); 
			} 
		} 
	
			
		//输出到屏幕
		public void send(String str) { 
			try { 
				dos.writeUTF(str); 
			} catch (IOException e) { 
				clients.remove(this); 
				System.out.println("对方退出了!我从List里面去掉了!"); 
			} 
		} 
	
	
	   
		public void run() { 
			try { 
				while(bConnected) { 
						String str = dis.readUTF(); 
						System.out.println(str); 
						for(int i=0; i<clients.size(); i++) { 
							Client c = clients.get(i); 
							c.send(str); 
						} 
				}
			} catch (EOFException e) { 
				System.out.println("Client closed!"); 
			} catch (IOException e) { 
				e.printStackTrace(); 
			} finally { 
				try { 
					if(dis != null) dis.close(); 
					if(dos != null) dos.close(); 
					if(s != null) { 
						s.close(); 
						
					} 
		
				} catch (IOException e1) { 
					e1.printStackTrace(); 
				} 
		
		
			} 
		} 
		
	} 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -