📄 testchatserver.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 + -