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

📄 testchatserver.java

📁 java聊天室服务端
💻 JAVA
字号:
/*
 *name:朱鶡
 *date:03-17
 *class: 
 */
package S;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToolBar;

public class TestChatServer implements ActionListener
{
	public static int port = 8888;
	JFrame frame;
	       
    JMenuBar menubar;
    JMenu menu_serve;
    JMenu menu_help;       	    
    JMenuItem menuItem_port;
    JMenuItem menuItem_start;
    JMenuItem menuItem_stop;
    JMenuItem menuItem_quit;
    JMenuItem menuItem_help;
    JToolBar toolBar;
    JButton button_port;
    JButton button_start;
    JButton button_stop;
    JButton button_quit ;
    static JTextArea textArea;
    JScrollPane js;
    JLabel label1 ;
    JComboBox comboBox1;
    JLabel label2;
    JTextField textField_message;
    JButton button_send;
    static JTextField textField2 ;
    public static ServerSocket socket;
    static DataOutputStream output;
    static DataInputStream input;
    static ServerListen serverListen;
	
    public static void main(String[] args)
	{
	    new TestChatServer().server();
	}
    
    public void server(){
    	frame = new JFrame("聊天室服务端");
		JPanel panel1 = new JPanel();
		JPanel panel2 = new JPanel();
		JPanel panel3 = new JPanel();
		JPanel panel4 = new JPanel();
		JPanel panel5 = new JPanel();
		JPanel panel6 = new JPanel();
	
        panel1.setLayout(new BorderLayout());
        panel2.setLayout(new BorderLayout());
        panel3.setLayout(new BorderLayout());
        panel4.setLayout(new BorderLayout());
        panel6.setLayout(new FlowLayout(FlowLayout.LEFT));
           
	    menubar = new JMenuBar();
	    menu_serve = new JMenu("服务");
	    menu_help = new JMenu("帮助");
	    menubar.add(menu_serve);
	    menubar.add(menu_help);
	   	    
	    menuItem_port = new JMenuItem("端口设置");
	    menuItem_port.addActionListener(this);
	    menuItem_start = new JMenuItem("启动服务");
	    menuItem_stop = new JMenuItem("停止服务");
	    menuItem_stop.setEnabled(false);
	    menuItem_stop.addActionListener(this);
	    menuItem_quit = new JMenuItem("退出");
	    menuItem_quit.addActionListener(this);
	    menu_serve.add(menuItem_port);
	    menu_serve.add(menuItem_start);
	    menu_serve.add(menuItem_stop);
	    menu_serve.add(menuItem_quit);
                
        menuItem_help = new JMenuItem("帮助");
        menuItem_help.addActionListener(this);
        menu_help.add(menuItem_help);
        
        toolBar = new JToolBar();
        button_port = new JButton("端口设置");
        button_port.addActionListener(this);
        button_start = new JButton("启动服务");
        button_start.addActionListener(this);
        button_stop = new JButton("停止服务");
        button_stop.setEnabled(false);
        button_stop.addActionListener(this);
        button_quit = new JButton("退出");
        button_quit.addActionListener(this);
        toolBar.add(button_port);
        toolBar.add(button_start);
        toolBar.add(button_stop);
        toolBar.add(button_quit);
               
	    textArea = new JTextArea(15,25);
	    textArea.setLineWrap(true);
	    js = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
	    label1 = new JLabel("发送至:");
	    String[] s1 = {"所有人"};
	    comboBox1 = new JComboBox(s1);
	    
	    
	    label2 = new JLabel("发送消息:");
	    textField_message = new JTextField(16);
	    button_send = new JButton("发送");
	    button_send.addActionListener(this);
	    
	    textField2 = new JTextField();

        panel1.add(menubar); 
        panel5.add(label2);
        panel5.add(textField_message);
        panel5.add(button_send);
        panel2.add(textField2);
          
        
        panel6.add(label1);
        panel6.add(comboBox1);
        
               
        panel4.add(js,BorderLayout.NORTH);
        panel4.add(panel6,BorderLayout.SOUTH);
        
        panel3.add(toolBar,BorderLayout.NORTH);
        panel3.add(panel4,BorderLayout.CENTER);
        panel3.add(panel5,BorderLayout.SOUTH);

        frame.add(panel1,BorderLayout.NORTH);
        frame.add(panel2,BorderLayout.SOUTH);
        frame.add(panel3);
      
	    frame.pack();
	    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		frame.setLocation((d.width - frame.getWidth())/2
				,(d.height - frame.getHeight())/2);
	    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    frame.setVisible(true);
    }

	public void actionPerformed(ActionEvent e)
	{
		String s = e.getActionCommand();
    	if(s.equals("端口设置")){
			Port port = new Port();
			port.init();
    	}else if(s.equals("启动服务")){
    		startServe();
	    }else if(s.equals("停止服务")){
    		int jop = JOptionPane.showConfirmDialog(null,"真的要停止服务吗?","停止服务",JOptionPane.YES_NO_OPTION);
    		if (jop == JOptionPane.YES_OPTION){
				stopServe();
			}
    	}else if(s.equals("退出")){
    		int result = JOptionPane.showConfirmDialog(null,"真的要退出吗?","退出",JOptionPane.YES_NO_OPTION);
			if(result == JOptionPane.OK_OPTION){
				System.exit(0);
			}
    	}else if(s.equals("帮助")){
			JOptionPane.showMessageDialog(null,"1、设置服务端的侦听端口(默认端 口为8888)。\n"+
											"2、点击 启动服务 按钮便可在指定的端口启动服务。\n"+
											"3、选择需要接受消息的用户,在消息栏中写入消息,\n"+
											"       之后便可发送消息。\n"+
											"4、信息状态栏中显示服务器当前的启动与停止状态、\n"+
											"       用户发送的消息和服务器端发送的系统消息。","帮助",JOptionPane.PLAIN_MESSAGE);
    	}else if(s.equals("发送")){
    		SendMessage();
		}
		
	}
	
	public void startServe(){
		try
		{
			socket = new ServerSocket(port,10);
			textArea.append("服务端已经启动,在"+port+"端口侦听...\n");
			
			
			
			serverListen = new ServerListen();
	        serverListen.start();
						
			button_start.setEnabled(false);
			menuItem_start.setEnabled(false);
			button_port.setEnabled(false);
			menuItem_port.setEnabled(false);
			button_stop.setEnabled(true);
			menuItem_stop.setEnabled(true);
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}
    
	public void stopServe(){
		try
		{
			socket.close();
			input.close();
			output.close();
			textArea.append("服务端已经关闭\n");
			button_start.setEnabled(true);
			menuItem_start.setEnabled(true);
			button_port.setEnabled(true);
			menuItem_port.setEnabled(true);
			button_stop.setEnabled(false);
			menuItem_stop.setEnabled(false);
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}
	
	public void SendMessage(){
		String msg = "系统消息:"+textField_message.getText() + "\n";
		
		textArea.append(msg);
		try
		{
			output.writeUTF(msg);
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		
		
		
		
		
	}
  
}

⌨️ 快捷键说明

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