老兄,看看序列化和反序列化就知道了
要不你可以采用RMI,底层封装了,但对于小程序代价太大了

解决方案 »

  1.   

    http://www-900.ibm.com/developerWorks/index.shtml
    上面有讲述怎样利用TCP/IP来传递对象。
    GOOD LUCK!
      

  2.   

    YourObject yourObj = ...;ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
    oos.writeObject(yourObj);ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());YourOubject obj = (YourObject)ois.readObject();
    ois.close();
    YourObject必须implements java.io.Serializable 或 java.io.Externalizable
      

  3.   

    理论上只要implements Serializable就可以用socket的。
    不知道你说的不可以是什么不可以?
    传不过去?还是别的。你的server端代码是否已经执行监听?端口设置正确否? 
    kkhui(jacky)没有问题的。关于使用socket在cs模式下传递对象实例我自己写程序试过,传递一个文件到server端,绝对没有问题,检查你的程序吧。
      

  4.   

    socket可以连接,但是writeobject时,程序就不动了。不知道为什么,是不是需要flush()啊这种强制的命令啊。我不是很懂。
      

  5.   

    你传的是什么对象。我测试传一个Vector,可以。客户端:
    import java.io.*;
    import java.net.*;
    import java.util.Vector;public class TestSocketClient
    {
      Socket       mSocket = null;
      DataInputStream   dis = null;
      DataOutputStream  dos = null;
      Vector mVector = new Vector(5,1);
      public TestSocketClient(String [] args)
      {
         mVector.addElement("aa");
         mVector.addElement("bb");
         try
         {
           mSocket = new Socket("192.188.0.5",9009);       dos = new DataOutputStream(mSocket.getOutputStream());
           ObjectOutputStream oos = new ObjectOutputStream(dos);
           oos.writeObject(mVector);
         }
         catch(Exception eSocket)
         {
         }
      }   public static void main(String [] args)
      {    new TestSocketClient(args);
      }
    }
      

  6.   

    服务端:package pSocket;import java.io.*;
    import java.net.*;
    import java.util.Vector;/**
     *
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: </p>
     * @author unascribed
     * @version 1.0
     */public class TestSocketServer
    {
    ServerSocket mServerSocket = null;
    Socket       mSocket = null;
    public   Vector mAllClientVector = new Vector(5,2);//存放所有客户端信息 public TestSocketServer()
    {
     try
     {
     mServerSocket = new ServerSocket(9009,15);
     mSocket = mServerSocket.accept();
     ReceiveClientThread rCT = new ReceiveClientThread(this,mSocket);
     rCT.start();
     }
     catch(Exception eSocket)
     {
     }
    } public static void main(String [] args)
    {
    new TestSocketServer();
    }
    }class ReceiveClientThread extends Thread
    {
    private TestSocketServer mTestSocketServer = null;
    private Socket mSocket = null;
    private boolean mRunning = true;
    DataInputStream   dis = null;
    DataOutputStream  dos = null;
    Vector mVector = null;
    public ReceiveClientThread(TestSocketServer pTestSocketServer,Socket pSocket)
    {
    this.mTestSocketServer = pTestSocketServer;
    this.mSocket = pSocket;
    } public void run()
    {
    while(true)
    {
    if(!mRunning)
    {
    //在内存中删除相应的客户端信息
    break;
    }
    try
    {
     dis = new DataInputStream(mSocket.getInputStream());
     ObjectInputStream ois = new ObjectInputStream(dis);
     mVector = (Vector)ois.readObject();
     for(int i = 0 ; i < mVector.size(); i ++)
     {
     System.out.println(mSocket.getInetAddress().getHostAddress()+"输出:" + (String)mVector.elementAt(i));
     }
     //保存客户端信息:存入文件或临时内存中
     this.mTestSocketServer.mAllClientVector.addElement(mVector);
     //把mAllClientVector中的所有信息返回给客户端
    }
    catch(Exception iDios)
    {
    }
    }
    }}
      

  7.   

    恩?我怎么照你差不多的样子写不行呢??
    会不会writeobject写出的只是个句柄啊……