首先创建要传输的对象。
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Book implements Serializable {
int id;
String name;
String author;
}
创建TCP传输服务端。
/**
* 对象流传输服务端
*/
public class SocketObjServer {
@Test
public void test1() throws IOException, ClassNotFoundException {
//创建服务端socket,监听9000端口
ServerSocket serverSocket = new ServerSocket(9000);
//等待接收
Socket socket = serverSocket.accept();
//创建输入流接收数据
InputStream is = socket.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
//将接收的数据转换为指定对象
Book book = (Book) ois.readObject();
//输出对象信息
System.out.println(book);
//关闭流和socket连接
ois.close();
socket.close();
}
}
创建客户端。
/**
* 对象流传输客户端
*/
public class SocketObjClient {
@Test
public void test1() throws IOException {
//创建socket
Socket socket = new Socket("localhost",9000);
//创建输出流,向服务端发送数据
OutputStream os= socket.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
//创建传输对象,对象属性通过控制台输入
Book book = new Book();
Scanner sc = new Scanner(System.in);
System.out.println("输入书的id:");
int i= sc.nextInt();
book.setId(i);
System.out.println("输入书的名字:");
String name= sc.next();
book.setName(name);
System.out.println("输入书的作者:");
String author= sc.next();
book.setAuthor(author);
//通过输出流输出对象
oos.writeObject(book);
//关闭流和连接
oos.close();
socket.close();
}
}
测试连接:
1.客户端输入
2.服务端输出