我的ObjectInputStream有问题。我想通过它发送对象,但程序在我想初始化ObjectInputStream的地方停止了。我已经搜索了responsed,发现在初始化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"标记。
为什么它不起作用?
感谢
不能将字符流与对象流组合,因此要么用PrintWriter
包装OutputStream
,要么用ObjectOutputStream
包装,但不能同时包装两者。