4、Socket传递对象

本文介绍了一个简单的Java应用程序,包括客户端和服务端,通过Socket实现对象的序列化与反序列化在网络间传输。具体演示了如何创建可序列化的User类,并在客户端创建User对象,将其发送到服务端,服务端读取并打印接收到的对象信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前节讲到是字符串的传递,这里是服务器与客户端之间对象的传递:

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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值