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