类管理和加载器部分。package InterfaceOfClass;
import java.net.*;
import java.io.*;
import java.util.*;
public class InterfaceOfClass extends ClassLoader
 {    private String ProjectName=null;
      private String path=null;
      private String ServerClassName=null;
      private String ClientClassName=null;
      private byte[] classByteOfServerClass=null;
      private byte[] classByteOfClientClass=null;
      public  Class ServerClassInstance=null;
      public  Object ServerInstance=null;
      private DataOutputStream out=null;
      private DataInputStream in=null;
      
  private static Hashtable projects=new Hashtable();
  
  public InterfaceOfClass(String ProjectName,String path,String ServerClassName,String ClientClassName){
             super();
        this.ProjectName=ProjectName;
             this.path=path;
             this.ServerClassName=ServerClassName;
             this.ClientClassName=ClientClassName;
             
       }
       
       
  
  public static Hashtable returnHash(){
  
    return projects;
    
    }
           
           
                      
  public byte[] findClassBytes(String className){        try{
            FileInputStream inFile = new FileInputStream(path+ "/"+className+".class");
            
            byte[] classBytes = new byte[inFile.available()];
            inFile.read(classBytes);
            return classBytes;
            
         } catch (java.io.IOException ioEx){return null;}
         
      } 
      
      
      public Class findClass(String className)throws
        ClassNotFoundException{        byte[] classBytes = findClassBytes(className);
        
        if (classBytes==null){
            throw new ClassNotFoundException();
        }
        else{//System.out.println(classBytes.length+"");
            Class myclass=defineClass(className, classBytes,
                0, classBytes.length);
           // System.out.println(myclass.getClassLoader()+" "); 
            resolveClass(myclass);
            return myclass;   
        }
        
      }
      public void newInstance()
        {try{ ServerClassInstance.newInstance();}
     catch(InstantiationException ex4){ex4.printStackTrace();}
 catch(IllegalAccessException ex6){ex6.printStackTrace();}
      
       }
      
      public void setBytes()
      {
       classByteOfServerClass=findClassBytes(ServerClassName);
       classByteOfClientClass=findClassBytes(ClientClassName);
       }
      
      public void setInstance(Class Instance)
      {ServerClassInstance=Instance;
       }
      
      public void setIn(Object a)
      {ServerInstance=a;
       } 
      
      public void setStream(DataInputStream in,DataOutputStream out)
        {this.in=in;
         this.out=out; 
      
      }
      
      
      public String getProjectName(){
       return ProjectName;
       }
      
      public String getClassName()
      {return ClientClassName;}
      
      public void SendClassBytesToClient()  
       {
        try{
        out.write(classByteOfClientClass);
        out.flush();}
        catch(IOException ex){ex.printStackTrace();}
      }
      
      public void SendDataToClient(String data)
       { try{out.writeUTF(data);
         out.flush();}
         catch(IOException e){e.printStackTrace();}
         }  
         
          
      public String ReceiveDataFromClient()
        { try{String temp=null;
          temp=in.readUTF();
          return temp;}
          catch(IOException e){e.printStackTrace();return null;}
        
         }
        
        
      
        }