Java Socket怎么传输对象
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,这篇文章给大家介绍Java Socket怎么传输对象,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前面两篇文章介绍了怎样建立Java Socket通信,这一篇说一下怎样使用Jav
千家信息网最后更新 2025年11月11日Java Socket怎么传输对象
这篇文章给大家介绍Java Socket怎么传输对象,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
前面两篇文章介绍了怎样建立Java Socket通信,这一篇说一下怎样使用Java Socket来传输对象。
首先需要一个普通的对象类,由于需要序列化这个对象以便在网络上传输,所以实现java.io.Serializable接口就是必不可少的了,如下:
package com.googlecode.garbagecan.test.socket.sample3; public class User implements java.io.Serializable { private static final long serialVersionUID = 1L; private String name; private String password; public User() { } public User(String name, String password) { this.name = name; this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }对于Server端的代码,代码中分别使用了ObjectInputStream和ObjectOutputStream来接收和发送socket中的InputStream和OutputStream,然后转换成Java对象,如下:
package com.googlecode.garbagecan.test.socket.sample3; import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.logging.Level; import java.util.logging.Logger; public class MyServer { private final static Logger logger = Logger.getLogger(MyServer.class.getName()); public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(10000); while (true) { Socket socket = server.accept(); invoke(socket); } } private static void invoke(final Socket socket) throws IOException { new Thread(new Runnable() { public void run() { ObjectInputStream is = null; ObjectOutputStream os = null; try { is = new ObjectInputStream(new BufferedInputStream(socket.getInputStream())); os = new ObjectOutputStream(socket.getOutputStream()); Object obj = is.readObject(); User user = (User)obj; System.out.println("user: " + user.getName() + "/" + user.getPassword()); user.setName(user.getName() + "_new"); user.setPassword(user.getPassword() + "_new"); os.writeObject(user); os.flush(); } catch (IOException ex) { logger.log(Level.SEVERE, null, ex); } catch(ClassNotFoundException ex) { logger.log(Level.SEVERE, null, ex); } finally { try { is.close(); } catch(Exception ex) {} try { os.close(); } catch(Exception ex) {} try { socket.close(); } catch(Exception ex) {} } } }).start(); } }Client也和Server端类似,同样使用ObjectOutputStream和ObjectInputStream来处理,如下:
package com.googlecode.garbagecan.test.socket.sample3; import java.io.BufferedInputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.Socket; import java.util.logging.Level; import java.util.logging.Logger; public class MyClient { private final static Logger logger = Logger.getLogger(MyClient.class.getName()); public static void main(String[] args) throws Exception { for (int i = 0; i < 100; i++) { Socket socket = null; ObjectOutputStream os = null; ObjectInputStream is = null; try { socket = new Socket("localhost", 10000); os = new ObjectOutputStream(socket.getOutputStream()); User user = new User("user_" + i, "password_" + i); os.writeObject(user); os.flush(); is = new ObjectInputStream(new BufferedInputStream(socket.getInputStream())); Object obj = is.readObject(); if (obj != null) { user = (User)obj; System.out.println("user: " + user.getName() + "/" + user.getPassword()); } } catch(IOException ex) { logger.log(Level.SEVERE, null, ex); } finally { try { is.close(); } catch(Exception ex) {} try { os.close(); } catch(Exception ex) {} try { socket.close(); } catch(Exception ex) {} } } } }测试上面的代码,首先运行Server类,然后运行Client类,就可以分别在Server端和Client端控制台看到接收到的User对象实例了。
关于Java Socket怎么传输对象就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
对象
传输
代码
内容
更多
篇文章
帮助
运行
不错
普通
兴趣
实例
小伙
小伙伴
就是
序列
必不可少
接口
控制台
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
sql 不是主数据库
各国的网络安全投入
郴州安卓软件开发培训机构
amd 三代 服务器 纳米
干部选用依托干部数据库
奉贤区软件开发信息推荐
出租车公司安全生产数据库
保险行业网络技术应用
网络安全包括争取网络主权
网络安全类中文期刊
一个数据库系统应该具备哪些功能
63服务器
云服务器挂机多少钱
绕过服务器验证码
呼伦贝尔软件开发定制
智慧农业的服务器功能设计
了解当前网络安全形势
网络安全现状分析
海口升腾服务器直销价格
高校 网络安全体系建设目标
昆山网络技术创新服务
数据库修改字段名称使用的命令
网络安全法十三条
网络安全与文化
20能给个几个的数据库
国家地名和区划数据库
网络安全报警多长时间有结果
保密隐患排查数据库
服务器运维人员技能要求
c 多数据库连接