如果传2维数组,可以用ObjectOutputStream
比较好的办法是把游戏信息封装成一个可序列化的类,再writeObject(Object obj);

解决方案 »

  1.   

    楼上说的方法我都实现了,你有问题就和我讨论吧!
    不过好象用UDP更好一点呀!
      

  2.   

    楼上两位高手,请问有没有关于ObjectOutputStream使用的实例,最好是用Socket传输的,能不能给我发一份,急要!!!谢谢
    [email protected]
      

  3.   

    也可以不传数组啊,将数组的内容封装成字符串,用udp传输过去,速度很快。
      

  4.   

    jbuilder的samples\chess就是用socket来传送对象的,可以看看,主要是你要游戏信息要封装为一个serializable类。
      

  5.   

    相比字符串,对象传输更方便。你还可以试试rmi,根本就不用socket了。
      

  6.   

    感谢各位关注
    我的程序是用socket传送二维数组,有那位大虾发给我实例,最好有代码
    小弟感激不尽
    可以发到我邮箱里,[email protected]
    当然了,贴出来也行。
    再次感谢。
      

  7.   

    client:
    import java.io.*;
    import java.net.*;
    import java.util.Vector;
    /**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2001</p>
     * <p>Company: </p>
     * @author unascribed
     * @version 1.0
     */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);
     byte[] sendByte = new byte[3];
     sendByte[0] = (byte)0;
     sendByte[1] = (byte)1;
     sendByte[2] = (byte)2;
     dos = new DataOutputStream(mSocket.getOutputStream());
     ObjectOutputStream oos = new ObjectOutputStream(dos);
     oos.writeObject(sendByte);
     }
     catch(Exception eSocket)
     {
     }
    }  public static void main(String [] args)
    { new TestSocketClient(args);
    }
    }
      

  8.   

    server: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)
    {
    }
    }
    }
    }