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日
最近浏览更多
krispeng  LV6 前天
dapeng0011  LV13 2月25日
陈小灏  LV14 2023年12月27日
暂无贡献等级
yuchunxing  LV1 2023年9月2日
fuyouou  LV5 2023年6月29日
CL200228  LV4 2023年5月5日
gzryue  LV6 2023年3月8日
referrer  LV1 2022年12月25日
快le硕硕  LV1 2022年12月21日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友