我试图创建一个非阻塞套接字服务器,并且我从客户端通过套接字向服务器发送了序列化对象。服务器接收到一个空字节数组,然后接收一个带有序列化对象的填充字节数组。
final int value = channel.read(buffer);
if(value == -1){
throw new IOException("End of stream");
}
final byte[] bytes = new byte[buffer.remaining()];
buffer.get(bytes, 0, bytes.length);
buffer.clear();
我用来序列化对象的代码是
public static byte[] serialize(Object object) throws IOException {
final ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
final ObjectOutputStream stream = new ObjectOutputStream(byteStream);
stream.writeObject(object);
final byte[] bytes = byteStream.toByteArray();
stream.close();
byteStream.close();
return bytes;
}
此代码有两个输出,一个字节数组为空,一个字节数组填充有序列化的对象。首先,我收到了一个空字节数组,然后是填充的字节数组。
答案 0 :(得分:0)
由于user207421的评论,此问题已解决。翻转缓冲区就是解决方案。