通过socket传输List<Object>的总结

来源:互联网 发布:cydia软件源更新 编辑:程序博客网 时间:2024/04/26 07:49

  在做一个JavaC/S模式的项目时,需要实现一个传递List<Object>的功能,花费了一些时间,终于实现了。

首先我是有一个User类,也就是List<Object>中的Object,然后有一个SendMessage类,主要是通过其对象的序列化实现。其中要注意的是,这2个类在客户端和服务器端的路径要相同,代码如下:

User类:


public class User implements Serializable{
   private String name;
   private String nicheng;
   private String password;
   private String age;
   private String like;
   private String sex;
   private int flag;
   private String qq;
   private static final long serialVersionUID = -5240152692961888097L;

public String getQq() {
 return qq;
}
public void setQq(String qq) {
 this.qq = qq;
}
public int getFlag() {
 return flag;
}
public void setFlag(int flag) {
 this.flag = flag;
}
public String getName() {
 return name;
}
public void setName(String name) {
 this.name = name;
}
public String getNicheng() {
 return nicheng;
}
public void setNicheng(String nicheng) {
 this.nicheng = nicheng;
}
public String getPassword() {
 return password;
}
public void setPassword(String password) {
 this.password = password;
}
public String getAge() {
 return age;
}
public void setAge(String age) {
 this.age = age;
}
public String getLike() {
 return like;
}
public void setLike(String like) {
 this.like = like;
}
public String getSex() {
 return sex;
}
public void setSex(String sex) {
 this.sex = sex;
}
}

SendMessage类:

public class SendMessage implements Serializable {
         List<User> ss = null;
         private static final long serialVersionUID = -5240152692961888097L;
         public List<User> getSs() {
                 return ss;
         }

         public void setSs(List<User> ss) {
           this.ss = ss;
         }
}

服务器端核心代码:

 

            List<User> result = new ArrayList();
            while(rs1.next())     //这是从数据库提取数据,前面操作就省略了
             User us = new User();
             us.setName(rs1.getString("user_name"));
             us.setQq(rs1.getString("user_qq"));
             us.setFlag(1);
             result.add(us);
            }
            SendMessage sendmessage = new SendMessage();
            sendmessage.setSs(result);
            out.writeObject(sendmessage);

客户端核心代码:

    List<User> result = new ArrayList();
   SendMessage aa = new SendMessage();
    aa = (SendMessage)in.readObject();
    result = aa.getSs();
 

这就实现了 哈哈