ブール値とバイトがシリアライズ可能であることをJavaドキュメントから確認しました。Android docsに従って、私のクラスはシリアライズ可能なインターフェースを実装しています。なぜ例外が発生し続けるのかわかりません。ここで何が欠けていますか?クラスは次のようになります。
public class msgStruct implements Serializable {
boolean pingPong = false;
int msgId = 0;
byte[] bufferMsg = new byte[100];
}
これは、次のように、ソケットを介してサーバーに送信される前にシリアル化されます。
sendMsgStruct.pingPong = false;
sendMsgStruct.msgId = msgId;
rand.nextBytes(sendMsgStruct.bufferMsg);
try {
ObjectOutputStream serializeMobile = new ObjectOutputStream(mobileSocket.getOutputStream());
serializeMobile.writeObject(sendMsgStruct);
serializeMobile.close();
} catch (IOException e1) {
e1.printStackTrace();
return false;
}
サーバーは次のように逆シリアル化します。
try {
ObjectInputStream deserializeServer = new ObjectInputStream(clientSocket.getInputStream());
recvMsgStruct = (msgStruct) deserializeServer.readObject();
deserializeServer.close();
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
オブジェクトがシリアル化および逆シリアル化される行で例外が発生します。