除了RMI,没别的方法了?
BTW:我只是想做一个小程序而已,RMI方面的内容一点都不会!

解决方案 »

  1.   

    具体工作由对象序列化完成。
    对象的序列化处理非常简单,只需对象实现了Serializable接口即可(该接口仅是一个标记,没有方法)。在Java 1.1中,许多标准库类都发生了改变,以便能够序列化——其中包括用于基本数据类型的全部封装器、所有集合类以及其他许多东西。甚至Class对象也可以序列化(第11章讲述了具体实现过程)。
    为序列化一个对象,首先要创建某些OutputStream对象,然后将其封装到ObjectOutputStream对象内。此时,只需调用writeObject()即可完成对象的序列化,并将其发送给OutputStream。相反的过程是将一个InputStream封装到ObjectInputStream内,然后调用readObject()。和往常一样,我们最后获得的是指向一个上溯造型Object的句柄,所以必须下溯造型,以便能够直接设置。
      

  2.   

    hehe,think in java的10章有例子
      

  3.   

    //: Worm.java
    // Demonstrates object serialization in Java 1.1
    import java.io.*;class Data implements Serializable {
      private int i;
      Data(int x) { i = x; }
      public String toString() {
        return Integer.toString(i);
      }
    }public class Worm implements Serializable {
      // Generate a random int value:
      private static int r() {
        return (int)(Math.random() * 10);
      }
      private Data[] d = {
        new Data(r()), new Data(r()), new Data(r())
      };
      private Worm next;
      private char c;
      // Value of i == number of segments
      Worm(int i, char x) {
        System.out.println(" Worm constructor: " + i);
        c = x;
        if(--i > 0)
          next = new Worm(i, (char)(x + 1));
      }
      Worm() {
        System.out.println("Default constructor");
      }
      public String toString() {
        String s = ":" + c + "(";
        for(int i = 0; i < d.length; i++)
          s += d[i].toString();
        s += ")";
        if(next != null)
          s += next.toString();
        return s;
      }
      public static void main(String[] args) {
        Worm w = new Worm(6, 'a');
        System.out.println("w = " + w);
        try {
          ObjectOutputStream out =
            new ObjectOutputStream(
              new FileOutputStream("worm.out"));
          out.writeObject("Worm storage");
          out.writeObject(w);
          out.close(); // Also flushes output
          ObjectInputStream in =
            new ObjectInputStream(
              new FileInputStream("worm.out"));
          String s = (String)in.readObject();
          Worm w2 = (Worm)in.readObject();
          System.out.println(s + ", w2 = " + w2);
        } catch(Exception e) {
          e.printStackTrace();
        }
        try {
          ByteArrayOutputStream bout =
            new ByteArrayOutputStream();
          ObjectOutputStream out =
            new ObjectOutputStream(bout);
          out.writeObject("Worm storage");
          out.writeObject(w);
          out.flush();
          ObjectInputStream in =
            new ObjectInputStream(
              new ByteArrayInputStream(
                bout.toByteArray()));
          String s = (String)in.readObject();
          Worm w3 = (Worm)in.readObject();
          System.out.println(s + ", w3 = " + w3);
        } catch(Exception e) {
          e.printStackTrace();
        }
      }
    } ///:~
      

  4.   

    //根据用户所填信息尝试与服务器建立连接
      boolean connectToServer()
      {
        ConnectionData.server = jtxtServerIP.getText().toString().trim();
        try
        {
          ConnectionData.serport = Integer.parseInt(jtxtServerPort.getText().trim());
          ConnectionData.socket = new Socket(InetAddress.getByName(ConnectionData.server),
              ConnectionData.serport);      ConnectionData.in = new ObjectInputStream(ConnectionData.socket.getInputStream());
          ConnectionData.out = new ObjectOutputStream(ConnectionData.socket.getOutputStream());
        } catch(NumberFormatException e)    // 端口有误
        {
          JOptionPane.showMessageDialog(this,"请填写一个1--65536的端口!","确定",
                                        JOptionPane.ERROR_MESSAGE);
          return false;
        } catch(IOException e)               // 连接服务器有误
        {
          try
          {
            ConnectionData.socket.close();
          } catch(IOException e2) {}
          JOptionPane.showMessageDialog(this,"不能与服务器建立连接!","确定",
                                        JOptionPane.ERROR_MESSAGE);
          return false;
        }
        return true;
      }上述程序段编译时没有错,但一运行到 
    ConnectionData.in = new ObjectInputStream(ConnectionData.socket.getInputStream());
    句时,程序就运行不下去了,并且没有抛出异常,请问这是为什么?其中ConnectionData如下:package client;import java.io.*;
    import java.net.*;
    class ConnectionData
    {
      static String server;          //Server name
      static int serport;            //Port
      static Socket socket;          //Socket
      static ObjectInputStream in;      //ObjectInputStream
      static ObjectOutputStream out;        //ObjectOutputStream
      public ConnectionData()
      {
      }
    }