0
Javaサーバーからクラスメッセージをシリアル化してAndroid携帯に送信しようとしています。JavaサーバーからAndroidクライアントオブジェクトへシリアル化
ObjectInputStreamオブジェクトを開こうとするたびに、エラーが発生することなく、電話がハングします。
符号化方式 -
public void sendMessagesToPhone(String userName) {
System.out.println("Send messages to phone called");
ObjectOutputStream outputObjects = null;
ServerUser user = new ServerUser(userName, "");
s.getKeys(user);
user.setMessages();
ArrayList<Message> encryptedMessages = user.getMessages();
try {
//output = new DataOutputStream(socket.getOutputStream());
outputObjects = new ObjectOutputStream(socket.getOutputStream());
outputObjects.flush();
for(Message m : encryptedMessages) {
System.out.println(m);
outputObjects.writeObject(m);
}
} catch (Exception e) {
System.out.println("unable to create the streams");
e.printStackTrace();
}
try {
outputObjects.close();
} catch (Exception e) {
System.out.println("unable to close the streams");
e.printStackTrace();
}
}
}
そして、携帯電話自体にデコードするための試み -
public void getNewMessages() {
Socket connect = null;
ArrayList<Message> incomingMessages = new ArrayList<Message>();
ObjectInputStream input = null;
PrintWriter pw = null;
try {
connect = new Socket("removed", 7777);
//hangs here on creating the ObjectInputStream
input = new ObjectInputStream(connect.getInputStream());
pw = new PrintWriter(connect.getOutputStream(), true);
//client parses text input and will respond to the pw input
//by calling the sendMessagesToPhone(String user) method
pw.println("phonemessages");
pw.println(currentUser.getName());
Object obj = null;
while((obj = input.readObject()) != null) {
if(obj instanceof Message) {
incomingMessages.add((Message)obj);
}
else toast = Toast.makeText(this, "object is not a
message", Toast.LENGTH_SHORT);
toast.show();
}
} catch(Exception e) {
toast = Toast.makeText(this, e.getMessage() + "error 1st catch",
Toast.LENGTH_SHORT);
toast.show();
}
try {
pw.close();
} catch (Exception e) {
toast = Toast.makeText(this, e.getMessage() + "error 2nd catch",
Toast.LENGTH_SHORT);
toast.show();
}
try {
input.close();
} catch (Exception e) {
toast = Toast.makeText(this, e.getMessage() + "error 3rd catch",
Toast.LENGTH_SHORT);
toast.show();
}
私はこれを服用することが正しいアプローチであってもわからないんだけど、私は」どこにでもサンプルを見つけることは非常に難しいと感じました。
ご迷惑をおかけして申し訳ございません。
いいです。 'encryptedMessages'が空ではないと確信していますか? –