【发布时间】:2012-12-17 00:45:26
【问题描述】:
我还有一个问题。
这是我客户的一部分:
Socket socket = new Socket("127.0.0.1", 3000);
OutputStream out = socket.getOutputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput oo = null;
try {
oo = new ObjectOutputStream(bos);
oo.writeObject(mp3dataStrings);
byte[] serializedMP3 = bos.toByteArray();
out.write(serializedMP3);
out.flush();
} finally {
oo.close();
bos.close();
}
这是我服务器的一部分:
ServerSocket clientConnect = new ServerSocket(port);
System.out.println("SimpleServer running on port" + port);
Socket clientSock = clientConnect.accept();
InputStream is = clientSock.getInputStream();
byte[] buffer = new byte[1024];
for (int i = 0; i < buffer.length; i++) {
int b = is.read();
buffer[i] = (byte) b;
if (b == -1 | b == 0) break;
}
ObjectInputStream stream = new ObjectInputStream(new ByteArrayInputStream(buffer));
String[][] songs = (String[][]) stream.readObject();
stream.close();
当我发送我的对象(字符串[][])时,我得到异常无效的流标头:ACED0000。
我找不到这意味着什么以及我必须做什么。
问候 亚历克斯
【问题讨论】:
-
为什么将输入流复制到缓冲区,然后将此缓冲区传递给 ByteArrayInputStream ?
-
@benjarobin 为什么会有问题?听起来像是对我的暗示。
标签: java sockets serialization deserialization