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

📄 serverframe.java

📁 基本设计思路: 协同编辑开始
💻 JAVA
字号:
package servercoedit;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.borland.jbcl.layout.*;
import javax.swing.border.*;
// UI classes
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
import javax.swing.border.*;

import javax.swing.text.*;

import java.io.*;

import java.util.Vector;
import java.util.StringTokenizer;

// events
//import com.sun.star.lang.EventObject;
import java.awt.AWTEvent;
import java.awt.event.WindowEvent;

// base classes
import java.lang.*;

/**
 * <p>Title: CoEditServer</p>
 * <p>Description: 服务器</p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: zhhz</p>
 * @author 景栋盛
 * @version 1.0
 */

public class ServerFrame extends JFrame {
  JPanel contentPane;
  XYLayout xYLayout1 = new XYLayout();
  List list1 = new List();
  JTextArea jTextArea1 = new JTextArea();
  JTextPane jTextPane1 = new JTextPane();
  TitledBorder titledBorder1;

 ServerSocket commandServerSocket=null;
 ServerSocket dataServerSocket=null;
 Socket socketCommand=null;
 Socket socketData=null;
 Vector clients=new Vector(20);
 int active_connects=0;
 WatchThead serverMainThead ;
 JButton jButton1 = new JButton();
 JButton jButton2 = new JButton();
 TextField textField1     = new TextField();
 File totalDocument=new File("c:/coEdit/totalDocument.xml");
 File block1=new File("c:/coEdit/block1.xml");
 File block2=new File("c:/coEdit/block2.xml");



  //Construct the frame
  public ServerFrame() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  //Component initialization
  private void jbInit() throws Exception  {
    contentPane = (JPanel) this.getContentPane();
    titledBorder1 = new TitledBorder("");
    contentPane.setLayout(xYLayout1);
    this.setResizable(false);
    this.setSize(new Dimension(447, 387));
    this.setTitle("服务器界面");
    jTextArea1.setBorder(BorderFactory.createEtchedBorder());
    jTextArea1.setText("");
    jTextPane1.setBorder(BorderFactory.createLineBorder(Color.black));
    jButton1.setText("Start");
    jButton1.addMouseListener(new ServerFrame_jButton1_mouseAdapter(this));
    jButton2.setText("Close");
    jButton2.addMouseListener(new ServerFrame_jButton2_mouseAdapter(this));
    contentPane.add(list1,    new XYConstraints(7, 10, 114, 121));
    contentPane.add(jButton1,     new XYConstraints(345, 12, 67, 48));
    contentPane.add(jButton2,    new XYConstraints(345, 69, 68, 50));
    contentPane.add(jTextPane1, new XYConstraints(1, 143, 406, 216));
    contentPane.add(jScrollPane1,        new XYConstraints(127, 10, 214, 122));
    jScrollPane1.getViewport().add(jTextArea1, null);
  }
  //Overridden so we can exit when window is closed
  public   JTextArea getTextArea(){return(this.jTextArea1);}
  public   List getlist(){return(this.list1);}
  public  ServerSocket getCommandSocket(){return(commandServerSocket);}

  public  ServerSocket getDataSocket(){return(dataServerSocket);}
  public  int getActiveClint(){return(active_connects);}
  public  void setActiveClint(int active){active_connects=active;}
  public  void setCommandServerSocket(ServerSocket ss){commandServerSocket=ss;}

 /* public synchronized void disconnect(clientSocket c)
    {
       try
       {
         jTextArea1.append("System:  "+c.name+"  left . \n");
         active_connects--;

         clients.removeElement(c);
         //jTextArea1.append("Now there are still"+clients.size()+" client online .\n");
        // jTextPane1.setText(sss);
      list1.remove(c.name);//c.name);
         c.stop();
         c.socketCom.close();
         c.socketDat.close();
        }
        catch(IOException ee)
        {
          jTextArea1.append("System : Client error when left.\n ");
        }
    }
  */

     /*public class WatchThead extends Thread
       {
           public void run()
           {
             int i= 0;

              while(true)
              {
                 if(clients.size()<40)
                 {
                   try {
                     socketCommand = commandSocket.accept();
                     socketData=dataSocket.accept();

                   }
                   catch (IOException ee) {
                     jTextArea1.append("System,Connect failed\n");
                   }

                   do {

                     clientSocket c = new clientSocket(socketCommand,socketData);
                     clients.addElement(c);
                     //if(checkName)
                      active_connects++;



                     jTextArea1.append("Now there are  " + active_connects + " clients on the Server\n");
                     clientSocket listdata = (clientSocket) clients.elementAt(clients.size()-1);
                     list1.add(listdata.name);
                     c.start();
                     i++;
                     break;

                   }
                   while (i < clients.size());

                 }
                   else
                   {
                     try
                     {
                          Thread.sleep(500);
                     }
                     catch(InterruptedException ee)
                     {
                         jTextArea1.append("Sleep Error Happened !\n");
                     }
                   }  //else

              }  //while(true)
           }

     }
*/

   /*  public class clientSocket extends Thread
      {
             DataInputStream inCom;
             ObjectInputStream inDat;
             DataOutputStream outCom;
             ObjectOutputStream outDat;
             Socket socketCom;
             Socket socketDat;
             String name="";
             String password="";
             String ip="";
              DataSocket sd;
          public  clientSocket(Socket s,Socket dataS)
              {
              socketCom = s;
              socketDat=dataS;
             try
                {
                   //inDat  =new ObjectInputStream(dataS.getInputStream());
                   inCom  =new DataInputStream(socketCom.getInputStream());
                   outCom =new DataOutputStream(socketCom.getOutputStream());
                   sd=new DataSocket(socketDat);


                   //outDat =new ObjectOutputStream(dataS.getOutputStream());
                   outCom.writeBytes(s.getLocalAddress().toString()+"\n");//output server ip
                   System.out.print(s.getLocalAddress().toString()+"\n");

                    String info=inCom.readLine();   //get client's name:password
                    StringTokenizer stinfo=new StringTokenizer(info,":");
                    //String head=stinfo.nextToken();
                    if(stinfo.hasMoreTokens())name=stinfo.nextToken();
                    if(stinfo.hasMoreTokens())password=stinfo.nextToken();
                    ip=s.getInetAddress().toString();  //get client ip
                    jTextArea1.append("System: "+name+" / "+ip+" has connected ...\n");
                    textField1.setText(name.trim());
                    outCom.writeBytes("520\n");
                  }
              catch(IOException e)
                {
                   jTextArea1.append("System: client's connection failed\n "+e.toString());

                 }
                // try{}catch(IOException ee){}

               }
        public void run()
        {

         String MSG,ORANT,CONTENT;
         String strCom;
         while(true)
         {

         MSG="";
         ORANT="";
         CONTENT="";
         strCom="";
         try
          {
          strCom=inCom.readLine();
          }
          catch(Exception ee)
          {
            jTextArea1.append("System: client's connection failed(Part1)\n "+ee.toString());
          }

             if(strCom=="")
                   {

                       disconnect(this);
                       return;
                    }
             else
           {
             StringTokenizer stinfo=new StringTokenizer(strCom,":");
             if(stinfo.hasMoreTokens())
                   MSG=stinfo.nextToken().trim();
             if(stinfo.hasMoreTokens())
                   ORANT=stinfo.nextToken().trim();
              if(stinfo.hasMoreTokens())
                   CONTENT=stinfo.nextToken().trim();
// jTextArea1.append("\n"+strCom+"\n"+MSG+"\n"+ORANT+"\n");

              if(MSG.compareTo("POST")==0)
              {
                if (ORANT.compareTo("document") == 0)
                  {


                       sd.receiveFileAndSaveTo(totalDocument);



                  }
                if(ORANT.compareTo("block1")==0)
                {

                   sd.receiveFileAndSaveTo(block1);

                }
                if(ORANT.compareTo("block2")==0)
                {

                  sd.receiveFileAndSaveTo(block2);

                }
              }
              if(MSG.compareTo("GET")==0)
              {
                 if(ORANT.compareTo("block1")==0)sd.sendFileTo(block1);

                 if(ORANT.compareTo("block2")==0)sd.sendFileTo(block2);

                 if(ORANT.compareTo("document")==0)sd.sendFileTo(totalDocument);

               }
               if(MSG.compareTo("QUIT")==0)
                  {
                      try{outCom.writeBytes("QUIT"+name+"\n");}
                      catch(Exception ee){jTextArea1.append("error\n");}
                      disconnect(this);
                   }

              }
          }
        }

    }

*/

  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }

  void jButton1_mouseReleased(MouseEvent e) {
             if(commandServerSocket==null)
             {
               try
                 {
                   commandServerSocket=new ServerSocket(2525);  //command stream
                   dataServerSocket= new ServerSocket(2526);    //data stream
                   jTextArea1.append("System: Server Starting \n");
                  }
                 catch(IOException ee)
                 {
                   jTextArea1.append("System:  Fail to start Server!\n");
                   jTextArea1.append(ee.toString()+"\n");
                 }
              }
                 if(commandServerSocket!=null)
                 {
                    jTextArea1.append("System: Starting now.\n");
                    serverMainThead=new WatchThead(this);
                    serverMainThead.start();  //Server main thead is begining
                  }
                  jButton1.setEnabled(false);
                  jButton2.setEnabled(true);

  }

  void jButton2_mouseReleased(MouseEvent e) {

      jButton1.setEnabled(true);
      jButton2.setEnabled(false);
      serverMainThead.closeAll();


  }
  JScrollPane jScrollPane1 = new JScrollPane();
}

class ServerFrame_jButton1_mouseAdapter extends java.awt.event.MouseAdapter {
  ServerFrame adaptee;

  ServerFrame_jButton1_mouseAdapter(ServerFrame adaptee) {
    this.adaptee = adaptee;
  }
  public void mouseReleased(MouseEvent e) {
    adaptee.jButton1_mouseReleased(e);
  }
}

class ServerFrame_jButton2_mouseAdapter extends java.awt.event.MouseAdapter {
  ServerFrame adaptee;

  ServerFrame_jButton2_mouseAdapter(ServerFrame adaptee) {
    this.adaptee = adaptee;
  }
  public void mouseReleased(MouseEvent e) {
    adaptee.jButton2_mouseReleased(e);
  }
}

⌨️ 快捷键说明

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