⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serverframe.java

📁 它能够进行简单的文字聊天和基本的信息交换。
💻 JAVA
字号:
/*
 * ServerFrame.java
 *
 *  
 */

/**
 *
 * @author  codewar1
 */
import javax.swing.event.*;
import java.net.*;
import java.io.*;
import javax.swing.*;
public class ServerFrame extends javax.swing.JFrame {
    
    /** Creates new form ServerFrame */
    public ServerFrame() {
        initComponents();
        setVisible(true);
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
    private void initComponents() {
        jFileChooser1 = new javax.swing.JFileChooser();
        jFileChooser2 = new javax.swing.JFileChooser();
        jFileChooser3 = new javax.swing.JFileChooser();
        jPanel1 = new javax.swing.JPanel();
        jMsg = new javax.swing.JTextField();

        jScrollPane1 = new javax.swing.JScrollPane();
        jShow = new javax.swing.JTextArea();
        jShow.setEditable(false);
        jStart = new javax.swing.JButton();
        jSend = new javax.swing.JButton();
        jSeparator1 = new javax.swing.JSeparator();
        jStop = new javax.swing.JButton();
        jStop.setEnabled(false);
        jsendfile = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        jfileShow = new javax.swing.JTextArea();

        getContentPane().setLayout(new java.awt.FlowLayout());

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("myChatServer");
        setBackground(new java.awt.Color(255, 153, 51));
        setName("myChat");
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosed(java.awt.event.WindowEvent evt) {
                formWindowClosed(evt);
            }
        });

        jPanel1.setBackground(new java.awt.Color(0, 51, 51));
        jMsg.setBackground(new java.awt.Color(153, 153, 0));
        jMsg.setColumns(20);
        jMsg.setEnabled(false);

        jShow.setBackground(new java.awt.Color(204, 204, 204));
        jShow.setColumns(20);
        jShow.setEditable(false);
        jShow.setRows(5);
        jScrollPane1.setViewportView(jShow);

        jStart.setForeground(new java.awt.Color(255, 0, 0));
        jStart.setText("Start");
        jStart.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jStartActionPerformed(evt);
            }
        });

        jSend.setText("SendMsg");
        jSend.setEnabled(false);
        jSend.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jSendActionPerformed(evt);
            }
        });

        jStop.setText("Stop");
        jStop.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jStopActionPerformed(evt);
            }
        });

        jsendfile.setText("SendFiles");
        jsendfile.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jsendfileActionPerformed(evt);
            }
        });

        jfileShow.setBackground(new java.awt.Color(204, 204, 204));
        jfileShow.setColumns(20);
        jfileShow.setEditable(false);
        jfileShow.setRows(5);
        jScrollPane2.setViewportView(jfileShow);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(22, 22, 22)
                        .addComponent(jMsg, javax.swing.GroupLayout.PREFERRED_SIZE, 248, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(23, 23, 23)
                        .addComponent(jSend)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jsendfile))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(17, 17, 17)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 468, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 270, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(jPanel1Layout.createSequentialGroup()
                                        .addComponent(jStart)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(jStop))
                                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 172, javax.swing.GroupLayout.PREFERRED_SIZE))))))
                .addContainerGap(0, Short.MAX_VALUE))
        );

        jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jSend, jStart, jStop, jsendfile});

        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 134, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jStop)
                            .addComponent(jStart)))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 163, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(17, 17, 17)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jsendfile)
                    .addComponent(jSend)
                    .addComponent(jMsg, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(46, 46, 46))
        );
        getContentPane().add(jPanel1);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jsendfileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jsendfileActionPerformed
                       startFileServer();
                               
    }//GEN-LAST:event_jsendfileActionPerformed

    private void jStopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jStopActionPerformed
                       stopServer();   // TODO 将在此处添加您的处理代码:
    }//GEN-LAST:event_jStopActionPerformed

    private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
                       stopServer();
                      // System.exit(0);//停止程序,退出服务
    }//GEN-LAST:event_formWindowClosed

    private void jSendActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jSendActionPerformed
                       sendMsg();//发送消息
    }//GEN-LAST:event_jSendActionPerformed

    private void jStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jStartActionPerformed
                       startServer();//启动服务
    }//GEN-LAST:event_jStartActionPerformed
    
    /**
     * @param args the command line arguments
     */
    /*public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ServerFrame().setVisible(true);
            }
        });
    }*/
    public void startServer()
    {
        try
        {
            InetAddress ip = InetAddress.getLocalHost();
            serverSocket = new ServerSocket(8000,5,ip);
            jShow.append("Severt start at 8000 port ...\n");//show help message
            jStart.setEnabled(false);
            jStop.setEnabled(true);
            //init the componient
            jMsg.setEnabled(true); 
            jSend.setEnabled(true);
            
        }
        catch(Exception e)
        {
            System.exit(0);
        }
        user = new client();//init user
        
        //start listenthread
        listenThread = new ServerListenThread(
                serverSocket,
                jMsg,
                jShow,
                user
                 );
        listenThread.start();
        
    }
    
    public void stopServer()
    {
        try
        {
            sendServerStop();
            listenThread.isStop = true;
            serverSocket.close();
            while(user.k != 0)
            {
                user.input.close();
                user.output.close();
                user.socket.close();
                user.k = 0;
            }
            jStart.setEnabled(true);
            jStop.setEnabled(false);
            jMsg.setEnabled(false);
            
            
        }
        catch(Exception e)
        {
          
        }
    }
    public void sendServerStop()
    {
        jShow.append("Server is stopped");    
       // while(user.k != 0)
      //  {
            try
            {
                //user.output.write("系统关闭".getBytes());
               //user.output.writeObject("系统关闭");
                user.output.writeObject(user.encrypt("shutdown"));
                user.output.flush();//send message
            }
            catch (Exception e)
            {}
       // }
    
    
    }
    public void sendMsg()
    {
        String msg = jMsg.getText();//get msg
        
        try
        {
            jShow.append("server:"+msg+"\n");
           // user.output.writeObject("服务器");
           // user.output.write("服务器".getBytes());
            user.output.writeObject(user.encrypt("服务器"));
            user.output.flush();//刷新缓冲区 发送昵称
            
           // user.output.writeObject(msg);
           //  user.output.write(msg.getBytes());
            user.output.writeObject(user.encrypt(msg));
            user.output.flush();//发送消息
            jMsg.setText("");
            
        }
        catch(Exception e)
        {}
        
    }
    public String read(){
         String string = null;
         try
         {
         int bytesAvailable = user.input.available();
         if (bytesAvailable > 0)
         {
             byte[] bytes = new byte[bytesAvailable];
             user.input.read(bytes);
             string = new String(bytes);
         }
         }
         catch(Exception e)
           {}
         return string;
  }
    
    public void startFileServer(){
         String filepath = null;
         JFileChooser chooser = new JFileChooser();
         //对话框选择文件
         chooser.setCurrentDirectory(new File("."));
         int k = chooser.showOpenDialog(ServerFrame.this);
         if ( k == JFileChooser.APPROVE_OPTION)
         {
             filepath = chooser.getSelectedFile().getPath();
         }
         fileThread = new fileServer(
                 jfileShow,//文件线程
                 filepath
                 );
        fileThread.start();//启动
         //String filename = 
         
         
     }
    
    // 变量声明 - 不进行修改//GEN-BEGIN:variables
    private javax.swing.JFileChooser jFileChooser1;
    private javax.swing.JFileChooser jFileChooser2;
    private javax.swing.JFileChooser jFileChooser3;
    private javax.swing.JTextField jMsg;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JButton jSend;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JTextArea jShow;
    private javax.swing.JButton jStart;
    private javax.swing.JButton jStop;
    private javax.swing.JTextArea jfileShow;
    private javax.swing.JButton jsendfile;
    // 变量声明结束//GEN-END:variables
    private ServerSocket serverSocket;
    private client user;
    private ServerListenThread listenThread;
    private fileServer fileThread;
  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -