ObjectInputStream未初始化

时间:2015-12-28 19:03:50

标签: java stream serversocket objectinputstream

我遇到了ObjectInputStream的问题。我想通过这个发送对象,但程序停止在我想初始化ObjectInputStream的位置。我已经搜索了答案,我发现在初始化ObjectInputStream之前需要打开ObjectOutputstream。但这在那里是明确的。

我的客户类的代码片段:

socket = new Socket(InetAddress.getByName(server).getHostAddress(), 13340);
        messages = new Scanner(socket.getInputStream());
        p = new PrintStream(socket.getOutputStream());
        ObjectOutputStream o = new ObjectOutputStream(socket.getOutputStream());

        p.println("addServerContent");

        o.flush();
        System.out.println("1");
        o.writeObject(String.valueOf(index));
        o.writeObject(s);

而且这是服务器的一部分:

}else if(what.equals("addServerContent")){
        ObjectInputStream i = null;
        try{
            i = new ObjectInputStream(s.getInputStream());
        }catch(IOException e){}

        while(GxMS2.ListUsed){
            try {
                Thread.sleep(10);
            } catch (InterruptedException ex) {}
        }

        try{

            System.out.println("1");
            int index = Integer.parseInt((String)i.readObject());
            ServerContent sc = (ServerContent)i.readObject();

在服务器上它甚至没有达到“1”标记。

为什么不起作用?

谢谢

1 个答案:

答案 0 :(得分:0)

您无法将字符流与对象流组合在一起,因此要么将OutputStreamPrintWriterObjectOutputStream包裹在一起,而不是两者都包含在内。