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

📄 chatroomserverframe.java

📁 简单的聊天程序
💻 JAVA
字号:
package ChatRoom;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.ServerSocket;import java.net.Socket;import java.util.HashSet;import java.util.Set;import javax.swing.*;import javax.swing.JOptionPane;public class ChatRoomServerFrame extends javax.swing.JFrame implements ActionListener{		/** Creates new form ChatRoomServer */	public ChatRoomServerFrame() {		initComponents();	}		/** This method is called from within the constructor to	 * initialize the form.	 * WARNING: Do NOT modify this code. The content of this method is	 * always regenerated by the Form Editor.	 */	// <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">                          	private void initComponents() {		jLabel1 = new javax.swing.JLabel();		jPanel1 = new javax.swing.JPanel();		jPanel2 = new javax.swing.JPanel();		jLabel2 = new javax.swing.JLabel();		jtf = new javax.swing.JTextField();		start = new javax.swing.JButton();		quit = new javax.swing.JButton();		jScrollPane1 = new javax.swing.JScrollPane();		jta = new javax.swing.JTextArea();				setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);		setTitle("\u7fa4\u804a\u5668 CASD080512_Z.O.E");		setBackground(new java.awt.Color(255, 153, 153));		jLabel1.setFont(new java.awt.Font("文鼎PL细上海宋Uni", 1, 24));		jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);		jLabel1.setText("\u7fa4\u804a\u670d\u52a1\u5668V1.0");		jLabel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));				jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());		jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());		jLabel2.setFont(new java.awt.Font("Dialog", 1, 18));		jLabel2.setText("\u7aef\u53e3\u53f7: ");				jtf.setFont(new java.awt.Font("Dialog", 1, 14));				start.setFont(new java.awt.Font("Dialog", 1, 14));		start.setText("\u542f\u52a8");				quit.setFont(new java.awt.Font("Dialog", 1, 14));		quit.setText("\u9000\u51fa");				javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);		jPanel2.setLayout(jPanel2Layout);		jPanel2Layout.setHorizontalGroup(				jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)				.addGroup(jPanel2Layout.createSequentialGroup()						.addContainerGap()						.addComponent(jLabel2)						.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)						.addComponent(jtf, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)						.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 63, Short.MAX_VALUE)						.addComponent(start)						.addGap(52, 52, 52)						.addComponent(quit)						.addContainerGap())		);				jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {quit, start});				jPanel2Layout.setVerticalGroup(				jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)				.addGroup(jPanel2Layout.createSequentialGroup()						.addContainerGap()						.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)								.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)								.addComponent(jtf, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)								.addComponent(quit)								.addComponent(start, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE))								.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))		);				jPanel2Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {quit, start});				jta.setColumns(20);		jta.setRows(5);		jScrollPane1.setViewportView(jta);				javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);		jPanel1.setLayout(jPanel1Layout);		jPanel1Layout.setHorizontalGroup(				jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)				.addGroup(jPanel1Layout.createSequentialGroup()						.addContainerGap()						.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)								.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING)								.addComponent(jPanel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))								.addContainerGap(16, Short.MAX_VALUE))		);		jPanel1Layout.setVerticalGroup(				jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)				.addGroup(jPanel1Layout.createSequentialGroup()						.addContainerGap()						.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)						.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)						.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 343, Short.MAX_VALUE)						.addContainerGap())		);				javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());		getContentPane().setLayout(layout);		layout.setHorizontalGroup(				layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)				.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()						.addContainerGap()						.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)								.addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)								.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 488, Short.MAX_VALUE))								.addContainerGap())		);		layout.setVerticalGroup(				layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)				.addGroup(layout.createSequentialGroup()						.addContainerGap()						.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)						.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)						.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)						.addContainerGap())		);		pack();	}// </editor-fold>                        	private void action(){		start.addActionListener(this);		quit.addActionListener(this);	}		public void actionPerformed(ActionEvent e) {		if(e.getSource()==start){			if(jtf.getText().equals(""))				JOptionPane.showMessageDialog(this, "请输入端口号!");			else{				new StartThread().start();				start.setEnabled(false);			}		}else if(e.getSource()==quit){			System.exit(0);		}	}	class StartThread extends Thread{		@Override		public void run() {			new ChatRoomServer().startServe(Integer.parseInt(jtf.getText()));		}			}	public void showme(){		jta.setEditable(false);		action();		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		this.setLocation(300, 300);		this.setResizable(false);		this.setVisible(true);	}	public static void main(String[] args) {		new ChatRoomServerFrame().showme();	}	/**	 * @param args the command line arguments	 */		// 变量声明 - 不进行修改                     	private javax.swing.JLabel jLabel1;	private javax.swing.JLabel jLabel2;	private javax.swing.JPanel jPanel1;	private javax.swing.JPanel jPanel2;	private javax.swing.JScrollPane jScrollPane1;	private javax.swing.JTextArea jta;	private javax.swing.JTextField jtf;	private javax.swing.JButton quit;	private javax.swing.JButton start;	// 变量声明结束                   		public class ChatRoomServer {		private ServerSocket ss;		private Set<Socket> allSockets;				private void startServe(int port){			try {				ss=new ServerSocket(port);				allSockets=new HashSet<Socket>();				jta.append("服务器已启动!");				init();			} catch (IOException e) {				e.printStackTrace();			}					}		public void init()throws IOException{			while(true){				Socket s=ss.accept();				allSockets.add(s);				new ServerThread(s).start();			}		}		class ServerThread extends Thread{			private Socket s;						public ServerThread(Socket s){				this.s=s;			}			public void run(){				String str=null;				ObjectInputStream ois=null;				ObjectOutputStream oos=null;				try {					oos=new ObjectOutputStream(s.getOutputStream());					oos.writeObject("系统 : 你好!~");					while(true){						ois=new ObjectInputStream(s.getInputStream());						str=(String)ois.readObject();						jta.append(str+"\n");						jta.moveCaretPosition(jta.getText().length());						if(str.indexOf("quit")!=-1){							Thread.sleep(100);							s.close();							allSockets.remove(s);							break;						}						for(Socket all:allSockets){							oos=new ObjectOutputStream(all.getOutputStream());							oos.writeObject(str);							oos.flush();						}					}				} catch (Exception e) {					e.printStackTrace();				}			}		}	}}

⌨️ 快捷键说明

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