📄 clientsocket.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 + -