gpt4 book ai didi

java - 如何使用Sockets TCP在java和android之间正确传递对象?

转载 作者:行者123 更新时间:2023-12-01 09:55:59 24 4
gpt4 key购买 nike

我正在尝试使用 Android 应用程序和 Java 应用程序使用 TCP/IP 发送对象。但我遇到的问题是传入的信息为空。

该对象属于一个名为 Mensaje 的类,并且在两个项目中具有相同的包名称并具有相同的serialVersionUID:

package CLASSESS;

import java.io.Serializable;


public class Mensaje implements Serializable{
// private static final long serialVersionUID = 5950169519310163575L;
private static final long serialVersionUID = 9178463713495656548L;
public static int TYPE;
public static int ID;
public static String DATA;
}

Android 应用程序类实现 Serialized 并处理威胁

public class SocketClient implements Serializable{



private Runnable send_ObjectMessage = new Runnable(){
public void run(){

try {
obj_Mensaje = new Mensaje();
obj_Mensaje.TYPE = 1;
obj_Mensaje.ID = 2;
obj_Mensaje.DATA= "hOKA MUNDO";
salida_mensaje = new ObjectOutputStream(socket_cliente.getOutputStream());
salida_mensaje.writeObject(obj_Mensaje);
salida_mensaje.flush();
} catch (IOException e) {
e.printStackTrace();
}

}
};
}

服务器具有相同的 Mensaje 类,并使用相同的serialVersionUID 实现可序列化;

服务器读取威胁上的对象。

@Override
public void run() {
try {
obj_message_read = new Mensaje();
ois_readMessage = new ObjectInputStream(clientSocket.getInputStream());
while(clientSocket.isConnected()){
Object aux = ois_readMessage.readObject();
if(aux instanceof Mensaje){
obj_message_read = (Mensaje)aux;
setDATA(obj_message_read.DATA);
setTYPE(obj_message_read.TYPE);
setID(obj_message_read.ID);
System.out.println("Data" + obj_message_read.DATA);

}
}
}catch (IOException ioe){
ioe.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

}

问题在于 Mensaje 中的信息为空。所以当我打印 System.out.println("Data"+ obj_message_read.DATA);服务器打印

Data Null

最佳答案

我认为问题在于您尝试发送的字段被声明为static,这对于序列化来说是 transient 的。

更改它并删除该关键字:

public class Mensaje implements Serializable{
// private static final long serialVersionUID = 5950169519310163575L;
private static final long serialVersionUID = 9178463713495656548L;
public int TYPE;
public int ID;
public String DATA;
}

关于java - 如何使用Sockets TCP在java和android之间正确传递对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37215691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com