📄 serverframe.java
字号:
/*
* Created on 2004-12-14
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
/**
* @author mq
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import java.io.*;
import java.net.*;
public class ServerFrame extends JFrame {
private JButton jbStartServer;
private JButton jbStopServer;
private Border border;
private ServerSocket serverSocket;
private JComboBox combobox;
private JTextArea textarea;
private JTextField textfield;
private JTextField systemMsg;
private UserInfoList userInfoList;
private ServerListenThread listenThread;
public ServerFrame()
{
super("ServerFrame");
init();
setSize(370,570);
show();
}
public void init()
{
Border bevelBorder = BorderFactory.createBevelBorder(BevelBorder.RAISED,
Color.white,Color.white,Color.white,Color.white);
Border emptyBorder = BorderFactory.createEmptyBorder(1,1,1,1);
border = BorderFactory.createCompoundBorder(bevelBorder ,emptyBorder );
jbStartServer = new JButton("startServer");
jbStopServer = new JButton("StopServer" );
jbStopServer.setEnabled(false);
jbStartServer.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
startServer();
}
}
);
jbStopServer.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
stopServer();
}
}
);
combobox = new JComboBox();
combobox.insertItemAt("all",0);
combobox.setSelectedIndex(0);
textarea = new JTextArea(20,20);
textarea.setEditable(false);
textfield = new JTextField(40);
textfield.setEditable(false);
systemMsg = new JTextField(40);
systemMsg.setEnabled(false);
systemMsg.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
sendSystemMessage();
}
}
);
this.addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
stopServer();
System.exit(0);
}
}
);
Container c = getContentPane();
c.setLayout(null);//
jbStartServer.setBorder(border);
jbStartServer.setBounds( 30,30,90,30);
jbStopServer .setBorder(border);
jbStopServer .setBounds(150,30,90,30);
textfield.setBounds(30, 75,300, 20);
textarea .setBounds(30,110,300,300);
combobox .setBounds(30,425, 90, 30);
systemMsg.setBounds(30,470,300, 20);
c.add(jbStartServer,null);
c.add(jbStopServer ,null);
c.add(textfield,null);
c.add(textarea ,null);
c.add(combobox ,null);
c.add(systemMsg,null);
}
public void startServer()
{
try
{
serverSocket = new ServerSocket(8000,10);
textarea.append("server start at 8000 port ...\n");
jbStartServer.setEnabled(false);
jbStopServer .setEnabled(true);
systemMsg.setEnabled(true);
}
catch (Exception e)
{
//
}
userInfoList = new UserInfoList();
listenThread = new ServerListenThread(
serverSocket,
combobox,
textarea,
textfield,
userInfoList);
listenThread.start();
}
public void stopServer()
{
try
{
sendStopToAll();
listenThread.isStop = true;
serverSocket.close();
int count = userInfoList.getCount();
int i =0;
while( i < count)
{
Node node = userInfoList.find(i);
node.input .close();
node.output.close();
node.socket.close();
i ++;
}
jbStartServer.setEnabled(true);
jbStopServer .setEnabled(false);
systemMsg.setEnabled(false);
combobox.removeAllItems();
combobox.addItem("all");
}
catch(Exception e)
{
//
}
}
public void sendStopToAll()
{
int count = userInfoList.getCount();
int i = 0;
while(i < count)
{
Node node = userInfoList.find(i);
if(node == null)
{
i ++;
continue;
}
try
{
node.output.writeObject("服务关闭");
node.output.flush();
}
catch (Exception e)
{
//
}
i++;
}
}
public void sendMsgToAll(String msg)
{
int count = userInfoList.getCount();
int i = 0;
while(i < count)
{
Node node = userInfoList.find(i);
if(node == null)
{
i ++;
continue;
}
try
{
node.output.writeObject("系统信息");
node.output.flush();
node.output.writeObject(msg);
node.output.flush();
}
catch (Exception e)
{
//
}
i++;
}
}
public void sendSystemMessage()
{
String toSomebody = combobox.getSelectedItem().toString();
String message = systemMsg.getText() + "\n";
textarea.append(message);
if(toSomebody.equalsIgnoreCase("all"))
{
sendMsgToAll(message);
}
else
{
Node node = userInfoList.find(toSomebody);
try
{
node.output.writeObject("系统信息");
node.output.flush();
node.output.writeObject(message);
node.output.flush();
}
catch(Exception e)
{
//
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -