说明:以下三个类要分三个类编写,实体类用了ArrayList进行保存,有兴趣可以了解一下ArrayList的使用。
1.服务器端:
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
public class TCPServer {
public static void main(String[] args) throws IOException, ClassNotFoundException {
//创建Socket对象
ServerSocket ss = new ServerSocket(8888);
System.out.println("服务器开启,等待客户端访问……");
//接收accept对象,并接收
Socket s = ss.accept();
//获取客户端的数据
InputStream ips = s.getInputStream();
//将信息传给对象流
ObjectInputStream ois = new ObjectInputStream(ips);
//创建ArrayList容器,用于接收类对象
ArrayList<Person> per = (ArrayList<Person>) ois.readObject();
for (int i = 0; i < per.size(); i++) {
Person person = per.get(i);
System.out.println("姓名:" + person.getName() + "\t" + "年龄:" + person.getAge());
}
//释放资源
s.close();
ss.close();
}
}
2.客户端:
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.ArrayList;
public class TCPClient {
public static void main(String[] args) throws IOException, ClassNotFoundException {
Socket s =new Socket("localhost",8888);//连接上“8888”服务器
//类对象
Person person=new Person();
person.setName("小马猿");
person.setAge(20);
Person person2=new Person();
person2.setName("小小");
person2.setAge(19);
//创建ArrayList保存两个人的信息
ArrayList<Person> per = new ArrayList<Person>();
per.add(person);
per.add(person2);
//创建对象流对象传入
ObjectOutputStream oos=new ObjectOutputStream(s.getOutputStream());
oos.writeObject(per);
oos.close();
s.close();
}
}
3.实体类:
import java.io.Serializable;
public class Person implements Serializable{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}