📄 server.java
字号:
return i; } } return -1; } private void initGUI() { try { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); this.setTitle("\u8054\u673a\u6d4b\u8bd5\u7cfb\u7edf\u670d\u52a1\u5668"); getContentPane().setLayout(null); { serverMenuBar = new JMenuBar(); setJMenuBar(serverMenuBar); { fileMenu = new JMenu(); serverMenuBar.add(fileMenu); fileMenu.setText("\u6587\u4ef6"); fileMenu.setPreferredSize(new java.awt.Dimension(33, 30)); { startmenuitem = new JMenuItem(); fileMenu.add(startmenuitem); startmenuitem.setText("\u542f\u52a8"); startmenuitem.setBounds(0, 0, 27, 23); startmenuitem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { startbuttonActionPerformed(evt); startbutton.setEnabled(false); startmenuitem.setEnabled(false); stopbutton.setEnabled(true); stopmenuitem.setEnabled(true); } }); } { stopmenuitem = new JMenuItem(); fileMenu.add(stopmenuitem); stopmenuitem.setText("\u505c\u6b62"); stopmenuitem.setBounds(0, 0, 27, 23); stopmenuitem.setEnabled(false); stopmenuitem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { stopbuttonActionPerformed(evt); startbutton.setEnabled(true); startmenuitem.setEnabled(true); stopbutton.setEnabled(false); stopmenuitem.setEnabled(false); } }); } { exitmenuitem = new JMenuItem(); fileMenu.add(exitmenuitem); exitmenuitem.setText("\u9000\u51fa"); exitmenuitem.setBounds(0, 0, 27, 23); exitmenuitem.setName("exitmenuitem"); exitmenuitem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { exitmenuitemActionPerformed(evt); } }); } helpmenu = new JMenu(); serverMenuBar.add(helpmenu); helpmenu.setText("\u5e2e\u52a9"); helpmenu.setBounds(27, 0, 27, 23); helpmenu.setPreferredSize(new java.awt.Dimension(33, 30)); { aboutmenuitem = new JMenuItem(); helpmenu.add(aboutmenuitem); aboutmenuitem.setText("关于"); aboutmenuitem.setBounds(27, 0, 27, 23); aboutmenuitem.setName("aboutmenuitem"); } } } { usersinfolabel = new JLabel(); getContentPane().add(usersinfolabel); usersinfolabel.setText("\u5f53\u524d\u5728\u7ebf\u7528\u6237\u4fe1\u606f"); usersinfolabel.setBounds(9, 35, 127, 15); } { LogTextArea = new JTextArea(); LogTextArea.setEditable(false); JScrollPane scrp=new JScrollPane(LogTextArea); getContentPane().add(scrp); scrp.setBounds(252, 53, 305, 203); } { loglabel = new JLabel(); getContentPane().add(loglabel); loglabel.setText("\u65e5\u5fd7\u8bb0\u5f55"); loglabel.setBounds(252, 31, 57, 21); } { oltsToolBar = new JToolBar(); getContentPane().add(oltsToolBar); oltsToolBar.setBounds(0, 0, 100, 30); { startbutton=new JButton(new ImageIcon("images/start.png")); oltsToolBar.add(startbutton); startbutton.setToolTipText("\u542f\u52a8\u670d\u52a1\u5668"); startbutton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { startbuttonActionPerformed(evt); startbutton.setEnabled(false); startmenuitem.setEnabled(false); stopbutton.setEnabled(true); stopmenuitem.setEnabled(true); } }); } { stopbutton=new JButton(new ImageIcon("images/stop.png")); oltsToolBar.add(stopbutton); stopbutton.setEnabled(false); stopbutton.setToolTipText("\u5173\u95ed\u670d\u52a1\u5668"); stopbutton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { stopbuttonActionPerformed(evt); startbutton.setEnabled(true); startmenuitem.setEnabled(true); stopbutton.setEnabled(false); stopmenuitem.setEnabled(false); } }); } { helpbutton=new JButton(new ImageIcon("images/help.png")); oltsToolBar.add(helpbutton); helpbutton.setToolTipText("\u5e2e\u52a9"); helpbutton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { helpbuttonActionPerformed(evt); } }); } } { tableScrollPane = new JScrollPane(); getContentPane().add(tableScrollPane); tableScrollPane.setBounds(12, 54, 220, 201); { model=new DefaultTableModel(){public boolean isCellEditable(int row,int col){return false;}}; model.addColumn("用户名"); model.addColumn("身份"); ActiveClientInfoTable = new JTable(model); tableScrollPane.setViewportView(ActiveClientInfoTable); ActiveClientInfoTable.setBorder(new LineBorder(new java.awt.Color(0,0,0), 1, false)); } } pack(); this.setSize(565, 334); this.setResizable(false); } catch (Exception e) { e.printStackTrace(); } } private void exitmenuitemActionPerformed(ActionEvent evt) { //向客户端发送断开连接信息 sendClients(new StringBuffer("QUIT")); closeAll();//调用closeAll方法关闭所有连接 System.exit(0); } private void stopbuttonActionPerformed(ActionEvent evt) { //向客户端发送断开连接信息 sendClients(new StringBuffer("QUIT")); closeAll();//调用closeAll方法关闭所有连接 WriteToLog("已经停止服务器...\n"); System.out.println("已经停止服务器...\n"); } private void helpbuttonActionPerformed(ActionEvent evt) { //向客户端发送断开连接信息 // sendClients(new StringBuffer("QUIT")); // closeAll();//调用closeAll方法关闭所有连接 WriteToLog("help...\n"); } private void startbuttonActionPerformed(ActionEvent evt) { //System.out.println("startbutton.actionPerformed, event="+evt); //TODO add your code for startbutton.actionPerformed System.out.println("正在启动服务器..."); WriteToLog("正在启动服务器...\n"); try { if(server!=null&&!server.isClosed()) server.close(); server=new ServerSocket(5000); WriteToLog("服务器已经启动\n"); new ServerAcceptThread().start(); } catch(IOException e) { System.out.println("Error:"+e.getMessage()); WriteToLog("Error:"+e+"\n"); } } class ServerAcceptThread extends Thread{ public void run(){ while(true) { if(server==null||server.isClosed()) break; //当客户数小于10个时开始连接 if(clients.size()<10) { try { socket=server.accept(); if(socket!=null) { //定义并实例化一个Client线程类,一个就对应一个客户连接 Client c=new Client(socket); clients.addElement(c);//加入clients数组中 if(legalCheck(c))//调用checkName方法验证c的合法性 { int index=usertablecontain(c); if(index==-1){ c.send(new StringBuffer("LOGINSUCC")); model.addRow(new String[]{c.name,c.status}); //在控制台打印客户连接信息 WriteToLog(c.status+":"+c.name+"---连接\n"); c.start();//启动线程 } else { c.send(new StringBuffer("ALREADYONLINE")); WriteToLog(c.status+":"+c.name+"---重复连接\n"); socketdisconnect(c); } } else { c.send(new StringBuffer("LOGINFAIL")); WriteToLog(c.status+":"+c.name+"---登录信息验证失败\n"); socketdisconnect(c); } } } catch(IOException e) { // System.out.println("Error:"+e); // if(server!=null&&!server.isClosed()) WriteToLog("Error:"+e+"\n"); } } } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -