package lts;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import javax.swing.*;
import javax.swing.plaf.FontUIResource;
import lts.ServerThread;
/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class server{
//新建窗体并设置窗体标题
public JFrame frame = new JFrame("平台");
public JPanel panel = null;
private JTextArea showmess;
private JTextField smess;
private JButton send;
private JTextArea showuser;
private JLabel user;
private JButton closeserver;
private JButton startserver;
private JTextArea showmax;
private JLabel maxnum;
private JTextArea showdkh;
private JLabel dkh;
ServerSocket server;
static server inst;
ServerThread sthread;
//get和set方法
public JTextArea getShowmess() {
return showmess;
}
public void setShowmess(JTextArea showmess) {
this.showmess = showmess;
}
public JTextArea getShowuser() {
return showuser;
}
public void setShowuser(JTextArea showuser) {
this.showuser = showuser;
}
//构造方法
public server()
{
//加载构造方法时初始化
init();
}
//
@SuppressWarnings("serial")
public void init(){
//创建布局管理器
panel = new JPanel() {
// 获取窗体所需组件
public void paintComponent(Graphics g) {
// 设定背景图路径(图片的路径要更换成你自己的相对路径也可以,我这里用绝对路径)
String imagePath = "D:\\works\\wf\\LTS\\src\\4.jpg";
// 创建图片类
ImageIcon icon = new ImageIcon(imagePath);
// 创建图片类获取图片
Image image = icon.getImage();
// 绘画
g.drawImage(image, 0, 0, icon.getIconWidth(),icon.getIconHeight(), icon.getImageObserver());
// 获取图片宽高作为窗体宽高
frame.setSize(icon.getIconWidth(), icon.getIconHeight());
}
};
//把布局设定进窗体中
frame.add(panel);
panel.setLayout(null);
frame.setVisible(true);
//将窗体设置为可视
frame.setPreferredSize(new java.awt.Dimension(794, 482));
frame.setTitle("服务器");
//调整窗体大小
frame.pack();
frame.setSize(794, 482);
//==================================================================
{
dkh = new JLabel();
panel.add(dkh);
dkh.setText("\u7aef\u53e3\u53f7");
dkh.setBounds(12, 45, 58, 26);
dkh.setFont(new java.awt.Font("幼圆",1,18));
dkh.setForeground(Color.white);
}
{
showdkh = new JTextArea();
panel.add(showdkh);
showdkh.setText("6666");
showdkh.setBounds(80, 45, 54, 23);
showdkh.setFont(new java.awt.Font("方正兰亭超细黑简体",1,15));
showdkh.setForeground(Color.black);
}
{
maxnum = new JLabel();
panel.add(maxnum);
maxnum.setText("\u6700\u5927\u4eba\u6570");
maxnum.setBounds(146, 49, 77, 16);
maxnum.setFont(new java.awt.Font("幼圆",1,18));
maxnum.setForeground(Color.white);
}
{
showmax = new JTextArea();
panel.add(showmax);
showmax.setText("30");
showmax.setBounds(235, 45, 27, 24);
showmax.setFont(new java.awt.Font("方正兰亭超细黑简体",1,15));
showmax.setForeground(Color.black);
}
{
startserver = new JButton();
panel.add(startserver);
startserver.setText("\u542f\u52a8\u670d\u52a1\u5668");
startserver.setBounds(451, 45, 119, 38);
startserver.setFont(new java.awt.Font("幼圆",1,18));
startserver.setForeground(Color.white);
startserver.setBackground(new Color(33, 184,229));
startserver.setBorder(null);
//启动服务器 监听器====================================
startserver.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
startserver.setEnabled(false);
closeserver.setEnabled(true);
System.out.println("启动服务器");
//最大连接人数
int num = Integer.parseInt(showmax.getText());
//端口
int port = Integer.parseInt(showdkh.getText());
//startserver方法
startServer(num, port);
JOptionPane.showMessageDialog(null, "服务器已启动", "提示",JOptionPane.WARNING_MESSAGE);
}
});
//======================================================
}
{
closeserver = new JButton();
panel.add(closeserver);
closeserver.setText("\u5173\u95ed\u670d\u52a1\u5668");
closeserver.setBounds(596, 45, 119, 38);
closeserver.setFont(new java.awt.Font("幼圆",1,18));
closeserver.setForeground(Color.white);
closeserver.setBackground(new Color(33, 184,229));
closeserver.setBorder(null);
closeserver.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
//System.exit(0);
sthread.stop();
}
});
}
{
user = new JLabel();
panel.add(user);
user.setText("\u5728\u7ebf\u7528\u6237");
user.setBounds(12, 93, 115, 18);
user.setFont(new java.awt.Font("幼圆",1,18));
user.setForeground(Color.white);
}
{
showuser = new JTextArea();
panel.add(showuser);
showuser.setBounds(12, 125, 136, 272);
showuser.setFont(new java.awt.Font("幼圆",1,15));
showuser.setEditable(false);
}
{
send = new JButton();
panel.add(send);
send.setText("\u53d1\u9001");
send.setBounds(633, 364, 82, 34);
send.setFont(new java.awt.Font("幼圆",1,18));
send.setForeground(Color.white);
send.setBackground(new Color(33, 184,229));
send.setBorder(null);
//=======发送信息按钮===============================
send.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
String s1=smess.getText();
if("".equals(s1)){//不为空的那个来点equals
JOptionPane.showMessageDialog(null, "输入内容不能为空", "友情提示", JOptionPane.WARNING_MESSAGE);
smess.requestFocus();
}else{
send(s1);
//=========================
Date d=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
String t=sdf.format(d);
//不能写在循环里面
showmess.append("系统消息"+" "+t+"\n"+" "+s1+"\n");//服务器发送消息显示到服务器界面
//================
smess.setText(null);// 发送后清空文本框内容
}
}
});
//===================================================
}
{
smess = new JTextField();
panel.add(smess);
smess.setBounds(172, 364, 449, 33);
smess.setFont(new java.awt.Font("幼圆",0,15));
smess.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
String s1=smess.getText();
if("".equals(s1)){//不为空的那个来点equals
JOptionPane.showMessageDialog(null, "输入内容不能为空", "友情提示", JOptionPane.WARNING_MESSAGE);
smess.requestFocus();
}else{
send(s1);
//=========================
Date d=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
String t=sdf.format(d);
//不能写在循环里面
showmess.append("系统消息"+" "+t+"\n"+" "+s1+"\n");//服务器发送消息显示到服务器界面
//================
smess.setText(null);// 发送后清空文本框内容
}
}
}
});
}
{
showmess = new JTextArea();
panel.add(showmess);
showmess.setBounds(172, 125, 543, 211);
showmess.setFont(new java.awt.Font("幼圆",0,15));
showmess.setEditable(false);//设置显示区域不可输入
showmess.setLineWrap(true);//设置自动换行,之后则不需要设置水平滚动条
//设置滚动条
JScrollPane jsp=new JScrollPane(showmess);
//设置矩形大小.参数依次为(矩形左上角横坐标x,矩形左上角纵坐标y,矩形长度,矩形宽度)
jsp.setBounds(172, 125, 543, 211);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
panel.add(jsp);
}
//==============================================================
}
public static void main(String[] args) {
//调用
new server();
}
//
public void startServer(int num, int port)
{
try {
server = new ServerSocket(port);
sthread = new ServerThread(server,this.getShowmess(),this.getShowuser());//启动服务时创建一个线程来专门处理连接
sthread.start();
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "启动服务器异常", "提示", JOptionPane.WARNING_MESSAGE);
}
}
//服务器发送消息的方法
public void send(String mess)
{
List<Socket> list = sthread.getClients();//要改进代码!!!
for (int i=0;i<list.size();i++) {
try {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(list.get(i).getOutputStream()));
bw.write(mess + "#"+"\n");//写入消息
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//=================================
//增加滚动条 服务器断开 客户端断开
}
最近下载更多
yuchunxing LV1
2023年9月2日
青柠编程 LV13
2023年4月18日
referrer LV1
2022年12月25日
qqyx777 LV1
2022年6月27日
微信网友_6003487859068928 LV5
2022年6月15日
123456qiqiqi LV1
2022年5月27日
tdcq123 LV14
2022年3月13日
bbbookworm LV1
2022年2月19日
weny_QAQ LV2
2021年12月22日
Sunknown LV1
2021年11月30日
最近浏览更多
13133117021 LV5
2024年12月24日
3263394665 LV9
2024年8月31日
周鸣郝 LV2
2024年5月26日
krispeng LV15
2024年4月16日
dapeng0011 LV15
2024年2月25日
陈小灏 LV18
2023年12月27日
微信网友_6762641760833536
2023年12月4日
暂无贡献等级
yuchunxing LV1
2023年9月2日
fuyouou LV5
2023年6月29日
CL200228 LV4
2023年5月5日

