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

📄 clientsocket.java

📁 基本设计思路: 协同编辑开始
💻 JAVA
字号:
package servercoedit;/** * <p>Title: CoEditServer</p> * <p>Description: 服务器</p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: zhhz</p> * @author 景栋盛 * @version 1.0 */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;public class ClientSocket extends Thread{  JTextArea jTextArea1; List list1; Vector clients=new Vector(40); ServerSocket commandServerSocket,dataServerSocket; Socket  socketCom,socketDat; DataInputStream inCom; DataOutputStream outCom; DataSocket sd; String name=""; String password=""; String ip=""; ServerFrame servFrame; File totalDocument=new File("c:/coEdit/totalDocument.xml"); File block1=new File("c:/coEdit/block1.xml"); File block2=new File("c:/coEdit/block2.xml"); int active_connects=0;  public ClientSocket(ServerFrame serverFrame,Socket com,ServerSocket serverDat) {    servFrame=serverFrame;    jTextArea1=serverFrame.getTextArea();    list1=serverFrame.getlist();    //commandSocket=serverFrame.getCommandSocket();    socketCom = com;    active_connects=serverFrame.getActiveClint();    dataServerSocket=serverDat;           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(socketCom.getLocalAddress().toString()+"\n");//output server ip                  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=socketCom.getInetAddress().toString();  //get client ip                  jTextArea1.append("System: "+name+" / "+ip+" has connected ...\n");                  outCom.writeBytes("520\n");                }            catch(IOException e)              {                 jTextArea1.append("System: client's connection failed\n "+e.toString());               }              // try{}catch(IOException ee){} }   public void getDataConnect ( ServerSocket ss)       {  Socket s=null;          try{          socketDat=ss.accept() ;          sd=new DataSocket(socketDat);}          catch(Exception ee){}        }             public synchronized void disconnect(ClientSocket c)                {                   try                   {                     jTextArea1.append("System:  "+c.name+"  left . \n");                     active_connects--;                     servFrame.setActiveClint(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 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)                {                   getDataConnect(dataServerSocket);                     sd.receiveFileAndSaveTo(totalDocument);                }              if(ORANT.compareTo("block1")==0)              {                  getDataConnect(dataServerSocket);                 sd.receiveFileAndSaveTo(block1);              }              if(ORANT.compareTo("block2")==0)              {                getDataConnect(dataServerSocket);                sd.receiveFileAndSaveTo(block2);              }            }            if(MSG.compareTo("GET")==0)            {               if(ORANT.compareTo("block1")==0){getDataConnect(dataServerSocket);sd.sendFileTo(block1);}               if(ORANT.compareTo("block2")==0){getDataConnect(dataServerSocket);sd.sendFileTo(block2);}               if(ORANT.compareTo("document")==0){getDataConnect(dataServerSocket);sd.sendFileTo(totalDocument);}             }             if(MSG.compareTo("QUIT")==0)                {                    try{outCom.writeBytes("QUIT"+name+"\n");}                    catch(Exception ee){jTextArea1.append("error\n");}                    disconnect(this);                 }            }        }      }}

⌨️ 快捷键说明

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