这里有一个服务器和一个客户端,运行环境是JB2006,主要就是客户端发送数据,服务器处理,然后在回传一个信息,问题是用Data流很正常,一换成Object流就会卡住(我想用Object流),这是为什么,怎么解决。小弟初学JAVA,谢谢高手指导了。。//服务器
package com.wvnet;import java.io.*;
import java.net.*;public class Server
{
    public static void main(String[] args)
    {
        try
        {
            ServerSocket serverSocket = new ServerSocket(10001);
            int clientNo = 1;
            while (true)
            {
                Socket connectToClient = serverSocket.accept();
                System.out.println("Start thread for client " + clientNo);
                HandleAClient thread = new HandleAClient(connectToClient,
                        clientNo);
                thread.start();
                clientNo++;
            }
        } catch (IOException ex)
        {
            System.err.println(ex);
        }
    }
}
class HandleAClient extends Thread
{
    private Socket connectToClient;
    private int clientNo;    public HandleAClient(Socket socket, int clientNo)
    {
        connectToClient = socket;
        this.clientNo = clientNo;
    }    public void run()
    {
        try
        {
//            DataInputStream isFromClient = new DataInputStream(
//                    connectToClient.getInputStream());
//            DataOutputStream osToClient = new DataOutputStream(
//                    connectToClient.getOutputStream());
            ObjectInputStream isFromClient =new ObjectInputStream(connectToClient.getInputStream());
            ObjectOutputStream osToClient =new ObjectOutputStream(connectToClient.getOutputStream());
            double radius = isFromClient.readDouble();
            System.out.println("radius received from client " +
                               clientNo + ": " + radius);
            double area = radius * radius * Math.PI;
            osToClient.writeDouble(area);
            osToClient.flush();
            System.out.println("Area found: " + area);
        } catch (IOException ex)
        {
            System.err.println(ex);
        }
    }
}
//客户端
package com.wvnet;import java.io.*;
import java.net.*;
public class Client
{
  public static void main(String[] args)
  {
    try
    {
      Socket connectToServer = new Socket("localhost", 10001);
//      DataInputStream isFromServer = new DataInputStream(
//        connectToServer.getInputStream());
//      DataOutputStream osToServer =
//        new DataOutputStream(connectToServer.getOutputStream());
        ObjectInputStream isFromServer =new ObjectInputStream(connectToServer.getInputStream());
        ObjectOutputStream osToServer =new ObjectOutputStream(connectToServer.getOutputStream());
        System.out.print("Please enter a radius: ");
        osToServer.writeDouble(20);
        osToServer.flush();
        double area = isFromServer.readDouble();
        System.out.println("Area received from the server is "
          + area);
    }
    catch (IOException ex)
    {
      System.err.println(ex);
    }
  }
}

解决方案 »

  1.   

    哦,你是说用buffer是吧,我现在就想用object流
      

  2.   

    如果你要用Object流,至少得保证对象是序列化的,既这个对象实现Serializable接口,
    把你要传送的对象,封装到实现这个接口的类中,再读写这个类的一个实例,试试
      

  3.   

    应该不是序列化的问题,我试传输了String 类型的数据,也是一样的结果。String 实现了Serializable