Java Socket传输对象(序列化)
来源:互联网 发布:如何处理tsv数据 编辑:程序博客网 时间:2024/06/05 11:34
1.首先需要一个普通的对象类,由于需要序列化这个对象以便在网络上传输,所以实现java.io.Serializable接口就是必不可少的,请求实体:
/** * @Title:RequestBean.java * @Package:com.sk.bean * @Description:请求参数 * @Author:shenkang * @Date:2014年8月8日 * @Version:V1.0 */package com.sk.bean;import java.io.Serializable;/** * */public class RequestBean implements Serializable {/** * */private static final long serialVersionUID = 1L;//可以放任何类型的数据private String name;private String password;/** * */public RequestBean() {}/** * @param name * @param password */public RequestBean(String name, String password) {this.name = name;this.password = password;}public String getName() {return this.name;}public void setName(String name) {this.name = name;}public String getPassword() {return this.password;}public void setPassword(String password) {this.password = password;}}
2.响应实体
/** * @Title:ResponseBean.java * @Package:com.sk.bean * @Description:响应参数 * @Author:shenkang * @Date:2014年8月8日 * @Version:V1.0 */package com.sk.bean;import java.io.Serializable;/** * */public class ResponseBean implements Serializable {/** * */private static final long serialVersionUID = 1L;private int id;private String name;private String pwd;private int age;private String sex;/** * */public ResponseBean() {}/** * @param id * @param name * @param pwd * @param age * @param sex */public ResponseBean(int id, String name, String pwd, int age, String sex) {this.id = id;this.name = name;this.pwd = pwd;this.age = age;this.sex = sex;}public int getId() {return this.id;}public void setId(int id) {this.id = id;}public String getName() {return this.name;}public void setName(String name) {this.name = name;}public String getPwd() {return this.pwd;}public void setPwd(String pwd) {this.pwd = pwd;}public int getAge() {return this.age;}public void setAge(int age) {this.age = age;}public String getSex() {return this.sex;}public void setSex(String sex) {this.sex = sex;}}
3.服务端:
/** * @Title:SocketServer.java * @Package:com.sk.socket * @Description:服务端 * @Author:shenkang * @Date:2014年8月8日 * @Version:V1.0 */package com.sk.socket;import java.io.BufferedInputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.ServerSocket;import java.net.Socket;import org.apache.log4j.Logger;import com.sk.bean.RequestBean;import com.sk.bean.ResponseBean;/** * */public class SocketServer {private final static Logger logger = Logger.getLogger(SocketServer.class.getName());public static void main(String[] args) throws IOException {ServerSocket server = new ServerSocket(6666);while (true) {logger.info("scoket start!");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();RequestBean req = (RequestBean) obj;System.out.println("user: " + req.getName() + "/"+ req.getPassword());//TOD 获取请求参数后可以查询数据信息ResponseBean res = new ResponseBean(1, "sk", "123456", 22, "男");os.writeObject(res);os.flush();} catch (IOException ex) {logger.info("读取数据出错!");} catch (ClassNotFoundException ex) {logger.info("缺少类信息!");} finally {try {is.close();} catch (Exception ex) {}try {os.close();} catch (Exception ex) {}try {socket.close();} catch (Exception ex) {}}}}).start();}}
4.客户端:
/** * @Title:SocketClient.java * @Package:com.sk.client * @Description:客户端 * @Author:shenkang * @Date:2014年8月8日 * @Version:V1.0 */package com.sk.client;import java.io.BufferedInputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.Socket;import org.apache.log4j.Logger;import com.sk.bean.RequestBean;import com.sk.bean.ResponseBean;/** * */public class SocketClient {private final static Logger logger = Logger.getLogger(SocketClient.class.getName());public static void main(String[] args) throws Exception {Socket socket = null;ObjectOutputStream os = null;ObjectInputStream is = null;try {socket = new Socket("127.0.0.1", 6666);os = new ObjectOutputStream(socket.getOutputStream());RequestBean req = new RequestBean("sk", "123456");os.writeObject(req);os.flush();is = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));Object obj = is.readObject();if (obj != null) {ResponseBean res = (ResponseBean) obj;System.out.println("age: " + res.getAge() + "/" + res.getSex());}} catch (IOException ex) {logger.info("读取数据出错!");} finally {try {is.close();} catch (Exception ex) {}try {os.close();} catch (Exception ex) {}try {socket.close();} catch (Exception ex) {}}}}
5.先启动服务端,然后启动客户端:
服务端打印:user: sk/123456
客户端打印:age: 22/男
1 0
- Java Socket传输对象(序列化)
- Socket传输序列化对象
- 序列化对象传输
- delphi java socket 对象传输
- Java Socket网络传输的序列化机制
- Java Socket网络传输的序列化机制
- Java 网络编程 之 传输对象 Serialization 序列化
- Java Socket实战-多线程通信 传输对象 传输压缩对象
- 通过socket连接传递java对象(对象序列化
- 通过socket传递java对象(对象序列化)
- 通过socket传递java对象(对象序列化)
- 通过socket传递java对象(对象序列化)
- 通过socket连接传递java对象(对象序列化)
- 通过socket传递java对象(对象序列化)
- 通过socket连接传递java对象(对象序列化)
- 通过socket传递java对象(对象序列化)
- Socket同时使用ObjectInputStream和ObjectOutputStream传输序列化对象时的顺序
- c#socket实现对序列化对象的传输和接收
- 修改USB设备或者硬盘的盘符名称
- objcopy/objdump/readelf等工具使用
- Linux/Unix shell 参数传递到SQL脚本
- c语言学习--空指针
- HDU 1217
- Java Socket传输对象(序列化)
- View DrawingCache
- Photon服务器引擎 入门教程二
- MQX--开篇之MQX简介、初始化、任务
- Visual Studio Online (TFS),放在微软云的版本控制
- 【POJ】2481 cow
- EasyUI DataGrid性能测试及解决方案(一)
- 标准输入、输出和错误和文件重定向
- linux下汇编语言编译执行