所以我试图通过打开的套接字连接发送String[]
。我目前有这个代码:
发送:
public void sendData() {
try {
OutputStream socketStream = socket.getOutputStream();
ObjectOutputStream objectOutput = new ObjectOutputStream(socketStream);
objectOutput.writeObject(new String[] {"Test", "Test2", "Test3"});
objectOutput.close();
socketStream.close();
} catch (Exception e) {
System.out.println(e.toString());
}
}
Recieving:
public Object readData() {
try {
InputStream socketStream = socket.getInputStream();
ObjectInputStream objectInput = new ObjectInputStream(new GZIPInputStream(socketStream));
Object a = objectInput.readObject();
return a;
} catch(Exception e) {
return null;
}
}
在我收到另一端的String[]
之后,我希望能像我正常做的那样迭代它,这样我就能得到这些值。我当前的代码似乎不起作用,因为它返回null
作为值。
这可能吗?
答案 0 :(得分:8)
我当前的代码似乎不起作用,因为它返回null作为值。
这也是非常明显的原因!
} catch(Exception e) {
return null;
}
那说“如果出现问题,请返回null
,不要告诉我问题是什么”!
捕捉和挤压这样的例外是不好的做法。至少,您应该尝试打印异常堆栈跟踪。在编写器代码中,您执行此操作:
System.out.println(e.toString());
这比什么都好,但它只打印异常名称和消息。你应该真的打印完整的堆栈跟踪......就像这样:
e.printStackTrace(System.out);
对于生产质量代码,您应该记录异常,而不仅仅是将消息写入标准输出。
一旦你有了堆栈跟踪,就可以找出真正的问题并修复它。
答案 1 :(得分:-2)
我设法自己搞清楚了,我把接收代码更改为:
public String[][] readData() {
try {
InputStream is = socket.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
return (String[][])ois.readObject();
} catch(Exception e) {
return null;
}
}
现在就像魅力一样。谢谢大家!