あなたの助けが必要です。
TCP接続を使用して、JavaサーバーとAndroidアプリクライアントの間でTCP接続を確立しています。シリアル化されたオブジェクトを送信するとしますが、クライアント側で毎回コードが Obj = (Person)in.readObject; でブロックされます。ここで、in はデータ オブジェクトinputstream であり、Person はシリアル化されたオブジェクトです。
ただし、文字列または文字列である整数を送信している場合、コードは機能しており、そのために Obj = in.readObject; を使用します。直接
したがって、逆シリアル化を成功させるために何を追加できるかを知る必要があります。
または、配列リストが文字列のみである可能性があるため、私は何をしていると思いますか
クライアント Android コード
lst = (ListView) findViewById(R.id.list);
al = new ArrayList<String>();
ad = new ArrayAdapter<String>(this,R.layout.list, al);
try {
socket = new Socket("192.168.0.103", 8888);
in = new ObjectInputStream(socket.getInputStream());
Object obj = null;
while ((obj = in.readObject()) != null) {
if (obj instanceof Person) {
al.add(((Person) obj).toString());
lst.setAdapter(ad);
}}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
finally{
if (in != null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
Java サーバーコード
try {
socket = serverSocket.accept();
oos = new ObjectOutputStream(socket.getOutputStream());
Person person = new Person();
person.setFirstName("James");
person.setLastName("Ryan");
person.setAge(19);
String a = "Ahmed";
oos.writeObject(a);
oos.writeObject(person);
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
finally{
if( oos!= null){
try {
oos.flush();
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
シリアル化されたオブジェクト
public class Person implements Serializable {
private String firstName;
private String lastName;
private int age;
public Person() {
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append(firstName);
buffer.append("\n");
buffer.append(lastName);
buffer.append("\n");
buffer.append(age);
buffer.append("\n");
return buffer.toString();
}