Person类:

package com.zhyea.olproxy.socket;

import java.io.Serializable;

public class Person implements Serializable {

    private static final long serialVersionUID = 3199890860738953693L;
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private int age; public Person(String name, int age){
this.name = name;
this.age = age;
} public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} }

服务端:

package com.zhyea.olproxy.socket;

import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList; public class Server { public static ArrayList<Socket> socketList = new ArrayList<Socket>(); public static void main(String[] args){
try {
//创建一个ServerSocket,用以监听客户端Socket的请求
ServerSocket serverSocket = new ServerSocket(49000);
while(true){
//接收到客户端的请求后,服务器端也产生一个socket
Socket socket = serverSocket.accept();
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
Person person = new Person("Robin", 16);
oos.writeObject(person);
//关闭输出流,关闭socket
oos.close();
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
} }

客户端:

package com.zhyea.olproxy.socket;

import java.io.ObjectInputStream;
import java.net.Socket; public class Client { public static void main(String[] args){
try {
Socket socket = new Socket("127.0.0.1", 49000);
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
Person robin = (Person)ois.readObject(); if(null!=robin)System.out.println(robin.getName() + "##" + robin.getAge()); ois.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

有两点需要注意

  • 对象类需要实现Serializable接口;
  • 通信流使用ObjectOutputStream 和ObjectInputStream 来处理。

java socket - 传递对象的更多相关文章

  1. C#(服务器)与Java(客户端)通过Socket传递对象(序列化 json)

    下面详细讲解实现的关键步骤:          通信关键: C#和java用Socket通信,发送数据和接收数据可以统一采用UTF-8编码,经过测试,使用UTF-8编码可以成功传递对象. 对于Sock ...

  2. java中传值及引伸深度克隆的思考(说白了Java只能传递对象指针)

    java中传值及引伸深度克隆的思考 大家都知道java中没有指针.难道java真的没有指针吗?句柄是什么?变量地址在哪里?没有地址的话简直不可想象! java中内存的分配方式有两种,一种是在堆中分配, ...

  3. Java Socket编程如何建立两者关系

    转自:http://developer.51cto.com/art/201003/190582.htm Java Socket编程需要大家详细的学习,有关的技术一直在不断的更新.那么要如何才能掌握好有 ...

  4. java之Socket多线程传递对象

    服务器端利用线程池回复客户端: public class Server implements Runnable { private final ServerSocket server; private ...

  5. JAVA Socket传输Object(对象)注意的问题

    在java中,可以通过socket将一个对象进行传递,通过ObjectOutputStream,ObjectInputStream来进行写入和读取(具体的方法参考http://blog.csdn.ne ...

  6. Java Socket实战之四:传输压缩对象

    转自:http://developer.51cto.com/art/201202/317546.htm 上一篇文章说到了用Java Socket来传输对象,但是在有些情况下比如网络环境不好或者对象比较 ...

  7. Java Socket实战之三:传输对象

    转自:https://i.cnblogs.com/EditPosts.aspx?opt=1 前面两篇文章介绍了怎样建立Java Socket通信,这一篇说一下怎样使用Java Socket来传输对象. ...

  8. Java语言对对象采用的是引用传递还是按值传递?

    按值调用表示方法接收的是调用者提供的值:而按引用调用表示方法接收的是调用者提供的变量地址:一个方法可以修改传递引用所对应的变量值, 而不能修改传递值调用所对应的变量值: Java语言对对象采用的是引用 ...

  9. JAVA Socket 编程学习笔记(二)

    在上一篇中,使用了 java Socket+Tcp/IP  协议来实现应用程序或客户端--服务器间的实时双向通信,本篇中,将使用 UDP 协议来实现 Socket 的通信. 1. 关于UDP UDP协 ...

随机推荐

  1. postgresql常用

    postgresql 字符串转整数 int.integer --把'1234'转成整数 select cast('1234' as integer ) ; --用substring截取字符串,从第8个 ...

  2. JAVA 集合相关整理和学习

    一.Set接口实现类 二.List接口实现类 三.Queue接口实现类 四.Map接口实现类 五.上面的图片截自附件: 附件列表

  3. Android Download机制详解(一)DocumentUI部分

    在Android中Google为我们集成了一套十分便利的Download机制,用来下载网络上的资源文件.以此省去了我们编写和维护大量与Download相关的代码. 组成 Android中Downloa ...

  4. 巨蟒python全栈开发-第15天 装饰器

    一.今日内容总览 关于函数的装饰器1.装饰器(重点,难点)(要求:反复写,代码不多但是很绕) 开闭原则:(比如,菜单是拆散的,一点点搞的,用友拆散自己的功能,以后就不用开发了) (1)对功能的扩展开放 ...

  5. python类的相关知识第一部分

    一.类的相关概念 (1).什么是类 具有同种属性的对象称为类,是个抽象的概念.比如说:汽车.人.狗.神: (2).什么是对象或实例 日常生活中的所有东西都是对象,是类的实例化.比如说:推土车是汽车的实 ...

  6. Set 接口常用子类及其特点

    Set 集合中元素不可重复,是无序的(存入和取出的顺序是不一样的), Set 接口中的方法和 Collection 接口一致. 常用子类: HashSet : 内部数据结构是哈希表, 是不同步的 Li ...

  7. kubernetes,Docker网络相关资料链接

    1.Why kubernetes not doesn't use libnetwork http://blog.kubernetes.io/2016/01/why-Kubernetes-doesnt- ...

  8. javascript教程5:--BOM操作

    1.BOM 简介 所谓的 BOM 即浏览器对象模型(Browser Object Model).BOM 赋予了 JS 操作浏览器的能力,即 window 操作.DOM 则用于创建删除节点,操作 HTM ...

  9. python线程池应用场景-爬虫

    import requests from bs4 import BeautifulSoup from concurrent.futures import ThreadPoolExecutor, Pro ...

  10. Python中的不同进制的语法和转换

    不同进制的书写方式 八进制(Octal) 0o377 十六进制(Hex) 0xFF 二进制(Binary) 0b11111111 不同进制之间的转换 python提供了三个内置的函数,能够用来在不同进 ...