前节讲到是字符串的传递,这里是服务器与客户端之间对象的传递:
1、创建一个User对象要实现序列化接口:
public class User implements java.io.Serializable{
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
2、编写Server类:
import java.io.*;
import java.net.*;
public class Server {
public static void main(String args[]) throws IOException, ClassNotFoundException {
int port = 8899;
//定义一个ServerSocket监听在端口8899上
ServerSocket server = new ServerSocket(port);
//server尝试接收客户端Socket的连接请求,server的accept方法是阻塞式的
Socket socket = server.accept();
ObjectInputStream ois=new ObjectInputStream(socket.getInputStream());
User u=(User)ois.readObject();
System.out.println("from client: " + u.getName() +"年龄:"+ u.getAge());
ois.close();
socket.close();
server.close();
}
}
3、编写客户端:
import java.io.*;
import java.net.*;
public class Client{
public static void main(String args[]) throws Exception {
String host = "127.0.0.1"; //要连接的服务端IP地址
int port = 8899; //要连接的服务端对应的监听端口
Socket client = new Socket(host, port);
User u =new User();
u.setAge(14);
u.setName("skx");
ObjectOutputStream oos =new ObjectOutputStream(client.getOutputStream());
oos.writeObject(u);
oos.close();
client.close();
}
}
运行得到:
from client: skx年龄:14