服务端:package Work1;
/**
* 通过Socket通讯来传输对象序列
* 通过服务端接受到的流来恢复对象并通过toString显示出来对象的信息
*/
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class MySocketServer {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ServerSocket serverSocket = new ServerSocket(5000);
Socket socket = serverSocket.accept();
//输入流加工
InputStream inputStream = socket.getInputStream();
ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
Object obj = objectInputStream.readObject();
if (obj !=null){
System.out.println("--------正在解析接受到的对象-----------");
Dog dog = (Dog)obj;
System.out.println(dog.toString());
}else{
System.out.println("收到信息但无法解析到对象");
}
//回复客户端
OutputStream outputStream = socket.getOutputStream();
String info = "服务器:对象已经接受到";
outputStream.write(info.getBytes());
objectInputStream.close();
serverSocket.close();
inputStream.close();
socket.close();
}
}
客户端:package Work1;
import java.io.*;
import java.net.Socket;
public class SocketClient {
//客户端
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost",5000);
//我想发送一个对象给服务器
Dog dog = new Dog("黑豆",6);
OutputStream outputStream = socket.getOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
objectOutputStream.writeObject(dog);
socket.shutdownOutput();
//接受服务器响应
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String reMsg = bufferedReader.readLine();
while (reMsg!= null){
System.out.println(reMsg);
reMsg = bufferedReader.readLine();
}
objectOutputStream.close();
socket.close();
}
}
Dog类:package Work1;
import java.io.Serializable;
public class Dog implements Serializable {
private String name;
private int age;
public Dog(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
}
运行结果: