使用JAVA编程实现多人聊天室(需要用到多线程)

  1. 使用JAVA编程实现多人聊天室(需要用到多线程),并要求服务器端至少包含如下功能:
    (1) 若有新用户连接,则向已经连接到服务端的用户发送用户上线消息。
    (2) 若有用户断开连接,则向在线用户发送用户下线消息。
    (3) 若有用户发送消息,则向所有用户转发该消息。
    (4) 当停止服务时,断开所有用户连接。
import java.io.*;
import java.io.BufferedReader;
import java.net.*;
import java.util.*;
public class Server implements Runnable{
	static Socket socket=null;
	static ServerSocket serversocket=null;
	static Socket[] sockets=new Socket[20];
	static int number=0;
	public Server(){
		try {
			serversocket=new ServerSocket(5000);		
		}
		catch (IOException e){
			e.printStackTrace();
		}
	}
	public static void main(String args[]){
		Scanner input =new Scanner (System.in);
		System.out.println("服务端开始工作");
		Server t=new Server();
		while(true){
			try{
				socket=serversocket.accept();
				number++;		
				sockets[number]=socket;
				System.out.println("第"+number+"个客户连接");
			}
			catch(IOException e){
				e.printStackTrace();
			}
		Print p = new Print(socket);
		Thread read = new Thread(t);
               		Thread print = new Thread(p);
            
		read.start();
            
		print.start();
		}
	}							
	public void run(){
		try{
			Thread.sleep(1000);
			BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			while(true){
			 	String xinxi=in.readLine();
				 System.out.println(xinxi);
				 PrintWriter out = new PrintWriter(socket.getOutputStream());
			 	for (int i = 0; i < 20; i++) {
			            Socket socket=sockets[i];
    					if (socket!=this.socket) {

			                	        out.println(xinxi);
					}
						out.flush();
				}	
			}
		}
catch (IOException e) {
			System.out.println("客户离开");		
			return;
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}
}
import java.io.*;
import java.net.*;
import java.util.*;
public class Print implements Runnable{
	Socket[] sockets=new Socket[20];
	static int number=0;
	Scanner in =new Scanner (System.in);
	public Print (Socket s){
		while(number<=19){
			sockets[number]=s;
			number++;
		}
	}
	public void run(){
		try{
			Thread.sleep(1000);
			while(true){
				String msg=in.next();
				for(int i=0;i

使用JAVA编程实现多人聊天室(需要用到多线程)_第1张图片
使用JAVA编程实现多人聊天室(需要用到多线程)_第2张图片

你可能感兴趣的:(使用JAVA编程实现多人聊天室(需要用到多线程))