親切に、私はJavaサーバーとAndroidモバイルクライアントを持っています。サーバーはデータベース(revokedUser)からオブジェクトを取得し、それをAndroidクライアントに送信します。
ただし、クライアントはオブジェクト入力ストリームによってオブジェクトを受け取りますが、readobject フェーズでブロックされ、理由がわかりません
つまり、クライアント コードの最初の UIhelper は参照を出力し、2 番目の UIhelper は参照を出力しません。
あなたの助けが必要です
サーバーコード
public void revokeUser(String userid){
try {
Connection conn = Config.getConnection();
PreparedStatement stat = conn.prepareStatement(sql);
stat.setString(1,userid);
stat.setInt(2, listno);
stat.setInt(3, counter);
stat.execute();
revokeUserzz(userid,listno, counter);
} catch (SQLException e) {
e.printStackTrace();
}}
private void revokeUserzz(String userid, int listno, int counter) {
RevokedUser revoke = new RevokedUser();
revoke.setuserName(userid);
revoke.setlistNumber(listno);
revoke.setcounter(counter);
try {
ServerSocket serversocket = new ServerSocket(4400);
System.out.println("listening: 8888");
Socket socket = serversocket.accept();
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(revoke);
System.out.println("UserName: " +revoke.getuserName());
System.out.println("ListNumber: " +revoke.getlistNumber());
System.out.println("Counter: " +revoke.getcounter());
serversocket.close();
socket.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
クライアントコード
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
Socket socket;
ObjectInputStream ois = null;
try {
socket = new Socket("192.168.1.115", 4400);
ois = new ObjectInputStream(socket.getInputStream());
UIHelper.displayText(this, R.id.textView1, "Object =\n" +ois.toString());
RevokedUser revoke = (RevokedUser) ois.readObject();
UIHelper.displayText(this, R.id.textView3, "Object =\n" +revoke.getuserName().toString());
}
}
/////////////////////////////////////////////// ///////////////
シリアライズされたコード
public class RevokedUser implements Serializable {
private static final long serialVersionUID = -86055680657258429L;
private int listNumber;
private int counter;
private String userName;
public RevokedUser() {
}
public int getlistNumber() {
return listNumber;
}
public void setlistNumber(int listNumber) {
this.listNumber = listNumber;
}
public int getcounter() {
return counter;
}
enter code here
public void setcounter(int counter) {
this.counter = counter;
}
enter code here
public String getuserName() {
return userName;
}
public void setuserName(String userName) {
this.userName = userName;
}
@Override
public String toString() {
return "RevockedUser{" +
"userIds='" + userName + '\'' +
", listNumber=" + listNumber +
", counter=" + counter +
'}';
}