Java ArrayList发送trought套接字
我有一个ArrayList。我已经用一个套接字连接了Java服务器和Android。如何将ArrayList从Android发送到Java服务器Java ArrayList发送trought套接字,java,android,sockets,arraylist,Java,Android,Sockets,Arraylist,我有一个ArrayList。我已经用一个套接字连接了Java服务器和Android。如何将ArrayList从Android发送到Java服务器 public class Person implements Serializable{ private String name; private String number; public Person(String name, String nr){ this.name = name; nu
public class Person implements Serializable{
private String name;
private String number;
public Person(String name, String nr){
this.name = name;
number = nr;
}
public String getName(){
return name;
}
public String getNr(){
return number;
}
}
创建toString和fromString方法。或者更好,使用GSON Gson是一个Java库,可用于将Java对象转换为其JSON表示形式
创建toString和fromString方法。或者更好,使用GSON Gson是一个Java库,可用于将Java对象转换为其JSON表示形式
由于您的人员已经序列化,您可以在byteArrayOutpuStream上使用ObjectOutputStream。并传输字节数组。 如果您的服务器知道类Person,因为它链接了您的jar。它可以读入字节数组并调用ObjectInputStream 例如:
List<Person> persons = new ArrayList<Persons>();
// TODO fill persons.
ByteArrayOutputStream bao = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bao);
oos.writeObject(persons);
oos.close();
byte[] byteToTransfer = oos.getBytes();
// transfer
在服务器端:
byte[] bytesFromSocket = ....;
ByteArrayInputStream bis = new ByteArrayInputStream(bytesFromSocket);
ObjectInputStream ois = new ObjectOutputStream(bis);
List<Persons> persons = (List<Persons>) ois.readObject(persons);
一旦您理解了这一点,请看一个更完整的代码,它的工作方式会有所不同:
由于您的人员已经序列化,您可以在byteArrayOutpuStream上使用ObjectOutputStream。并传输字节数组。 如果您的服务器知道类Person,因为它链接了您的jar。它可以读入字节数组并调用ObjectInputStream 例如:
List<Person> persons = new ArrayList<Persons>();
// TODO fill persons.
ByteArrayOutputStream bao = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bao);
oos.writeObject(persons);
oos.close();
byte[] byteToTransfer = oos.getBytes();
// transfer
在服务器端:
byte[] bytesFromSocket = ....;
ByteArrayInputStream bis = new ByteArrayInputStream(bytesFromSocket);
ObjectInputStream ois = new ObjectOutputStream(bis);
List<Persons> persons = (List<Persons>) ois.readObject(persons);
一旦您理解了这一点,请看一个更完整的代码,它的工作方式会有所不同:
同一个问题不要问两次……是的,我知道,但是这个问题没有答案,我浪费了6个小时,直到我决定再问一次,这是一个很好的答案。你上次已经得到了这个问题的答案,而这次这个问题甚至不是一个真正的问题。您得到的错误在哪里?到目前为止你尝试了什么?你不能指望这里有人能帮你解决这个问题。既然这是一个标准问题,你可以发一个链接到已经解决这个问题的人。这不是一个必须为他发明的新算法不要问同一个问题两次……是的,我知道,但是这个问题没有答案,我浪费了6个小时,直到我决定再问一次,这是一个很好的答案。你上次已经得到了这个问题的答案,而这次这个问题甚至不是一个真正的问题。您得到的错误在哪里?到目前为止你尝试了什么?你不能指望这里有人能帮你解决这个问题。既然这是一个标准问题,你可以发一个链接到已经解决这个问题的人。这不是一个必须为他发明的新算法,对不起,我混合了Geo JSONNp m8,你能投赞成票吗。如果你想,通信是在两个Java套接字之间进行的,而不是Javascript和基于Java的服务器之间。为什么要使用GSON而不是Java序列化?JSON的一个优点是它是文本,可以从其他非Java系统读取,并且消息更容易调试,因为它们是人类可读的。还有BSON二进制JSON,它需要更少的字节。您可以节省资金,并且当具有易于调试的人类可读消息时,priject会更快。这在很大程度上取决于项目。对于无法使用调试器调试的人类可读消息,您到底要调试什么?除非您要查看套接字之间发送的实际数据包,否则总会有一个java对象供您反思。啊,很抱歉,我将它与Geo JSONNp m8混为一谈,您可以投票赞成吗。如果你想,通信是在两个Java套接字之间进行的,而不是Javascript和基于Java的服务器之间。为什么要使用GSON而不是Java序列化?JSON的一个优点是它是文本,可以从其他非Java系统读取,并且消息更容易调试,因为它们是人类可读的。还有BSON二进制JSON,它需要更少的字节。您可以节省资金,并且当具有易于调试的人类可读消息时,priject会更快。这在很大程度上取决于项目。对于无法使用调试器调试的人类可读消息,您到底要调试什么?除非您要查看套接字之间发送的实际数据包,否则总会有一个java对象供您反思。