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

📄 multiserver.java

📁 要求你电脑装有JRE 一个基于JAVA的聊天程序
💻 JAVA
字号:
import java.net.*;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
public class MultiServer
{
 static Vector ss=new Vector();
 static TextArea text;
 static Frame f;
 static Panel p,p1,p2;
 static Label la;
 static TextField file,te;
 static Button b;
 static int i=0;
 static ServerSocket serverSocket;
  MultiServer(){
	  f=new Frame("Socket 服务端");
	  f.addWindowListener(new window());
	  f.setSize(400,400);
	  f.add("North",p=new Panel());
	  p.setLayout(new GridLayout());
	  p.add(la=new Label("在线人数",Label.CENTER));
	  p.add(p1=new Panel());
	  p1.setLayout(new GridLayout());
	  p1.add(file=new TextField());
	  file.setEditable(false);
	  f.add("Center",text=new TextArea());
	  f.add("South",p2=new Panel());
	  p2.setLayout(new GridLayout());
	  p2.add(te=new TextField("服务器的问候!"));
	  te.addActionListener(new Myaction());
	  p2.add(b=new Button("发送"));
	  b.addActionListener(new Myaction());
	  text.setEditable(false);
	  f.setVisible(true);
  }
  class window extends WindowAdapter
  {
	  public void windowClosing(WindowEvent e){
		  try{
			  print("服务器已关闭!!!");
			  serverSocket.close();
		  }catch(Exception ee){}
		  System.exit(-1);}
  };
  class Myaction implements ActionListener
  {
	  public void actionPerformed(ActionEvent e){
	    String s="来自服务器的问候:"+te.getText();
		try{
			print(s);
			}catch(Exception ee){}
		te.setText(null);
	  }
  };
  public void print(String s)throws Exception
	{
		Socket socket=null;
		PrintWriter pw=null;
         for(int i=0;i<ss.size();i++)
		{
			socket=(Socket)ss.get(i);
            pw=new PrintWriter(socket.getOutputStream());
			pw.println(s);
			pw.flush();
			}
	}
	public  static void main(String[] args) 
	{
		MultiServer mu=new MultiServer();
		boolean flags=true;
		try{
			serverSocket=new ServerSocket(5555);
		}catch(Exception e){
			System.out.println("Could not listen on port:4700.");
			System.exit(-1);
		}
		while(flags){
			try{
			   Socket socket=serverSocket.accept();
			   ss.addElement(socket);
			   text.append("有一个用户连接!\n");
			   if(socket!=null){
				   AddThread t=new AddThread(mu,socket);
				   i++;
				   file.setText(Integer.toString(i));
			   }
			}catch(Exception e){}
		}
		try{
			serverSocket.close();
		}catch (Exception e){}
	}
}

 class AddThread extends Thread
{
	BufferedReader br;
	MultiServer mu;
	Socket socket;
    public AddThread(MultiServer mu,Socket socket){
		try{
			this.mu=mu;
			this.socket=socket;
			while(true){
		br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
	    start();}
		}catch(Exception e){}
	}
	public void run(){
		String line=null;
			try{
               line=br.readLine();
				while(line!=null){
				mu.text.append(line+"\n");
				if(line.equals("exit")){
					mu.i--;
					mu.file.setText(Integer.toString(mu.i));
					mu.ss.remove(socket);
					socket.close();
				}
				else if(line.startsWith("来自服务器的问候:")){
					mu.print("系统提示:"+"来自服务器的问候"+"~~请务盗用服务器名~~");
					mu.ss.remove(socket);
					socket.close();
					}
				else mu.print(line);
				line=br.readLine();
				}
			}catch(Exception e){}	
	}

};

⌨️ 快捷键说明

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