通过socket连接传递java对象(对象序列化)

【第93题】JAVA高级技术-网络编程12(简易聊天室7:使用Socket传递对象) 聊天室 阅读详情

这篇文章主要实现的是j:通过socket传递Java对象。采用的方法就是对象序列化。方法是:通过socket建立c/s连接;通过ObjectOutputStream,ObjectOutputStream 读写对象。唯一需要留意的是传递的java 对象需要实现Serializable标记接口。代码包括:java对象类,Employee; socket client类;server类。主要代码如下:

java对象类:

import java.io.*;
import java.util.*;

public class Employee implements Serializable {

   private int employeeNumber;
   private String employeeName;

   Employee(int num, String name) {
      employeeNumber = num;
      employeeName= name;
   }

    public int getEmployeeNumber() {
      return employeeNumber ;
   }

   public void setEmployeeNumber(int num) {
      employeeNumber = num;
   }

   public String getEmployeeName() {
      return employeeName ;
   }

   public void setEmployeeName(String name) {
      employeeName = name;
   }
}

client类:

import java.io.*;
import java.net.*;

public class Client {

   public static void main(String[] arg) {
      try {
         Employee joe = new Employee(150, "Joe");

         System.out.println("employeeNumber= "
                            + joe .getEmployeeNumber());
         System.out.println("employeeName= "
                            + joe .getEmployeeName());

         Socket socketConnection = new Socket("127.0.0.1", 11111);


         ObjectOutputStream clientOutputStream = new
            ObjectOutputStream(socketConnection.getOutputStream());
         ObjectInputStream clientInputStream = new 
            ObjectInputStream(socketConnection.getInputStream());

         clientOutputStream.writeObject(joe);

         joe= (Employee)clientInputStream.readObject();

         System.out.println("employeeNumber= "
                            + joe .getEmployeeNumber());
         System.out.println("employeeName= "
                            + joe .getEmployeeName());

         clientOutputStream.close();
         clientInputStream.close();

      } catch (Exception e) {System.out.println(e); }
   }
}

Server类:

import java.io.*;
import java.net.*;

public class Server {

   public static void main(String[] arg) {

      Employee employee = null;

      try {

         ServerSocket socketConnection = new ServerSocket(11111);

         System.out.println("Server Waiting");

         Socket pipe = socketConnection.accept();

         ObjectInputStream serverInputStream = new   
            ObjectInputStream(pipe.getInputStream());

         ObjectOutputStream serverOutputStream = new
            ObjectOutputStream(pipe.getOutputStream());

         employee = (Employee )serverInputStream.readObject();

         employee .setEmployeeNumber(256);
         employee .setEmployeeName("John");

         serverOutputStream.writeObject(employee);

         serverInputStream.close();
         serverOutputStream.close();


      }  catch(Exception e) {System.out.println(e);
      }
   }

}

内存优化--LOGBACK导致内存告警 一.故事背景 由于开辟新市场需要,开发了新的项部署在海外平台,其中最消耗内存的功能是消费kafka消息(最开始预计一天有1千万的量),部署完之后运行一段时间发现出现内存告警问题。 二.分析问题 出现内存告警,(新项目是低配置机器 2C4G * 2台)第一个念头是去查看堆空间设置的情况,看到jvm启动命令中堆空间都是直接指定大小,说明问题不是出在堆空间 -Xmx3g -Xms3g 先不管这些,去查看总的内存使用情况,发现总的内存空间使用将近有92% = 3.68G,那么这多出来使用的0.6 阅读详情

相关推荐

项目管理-(补充)七种基本质量工具

七种基本质量工具,用于PDCA循环的架构内 解决与质量相关的问题,分为老七工具和新七工具。 1)老七种:刘英只点劣质茶(流程图、因果图、直方图、散点图、帕累托图、控制图、核查表)2)新七种:锯树联亲测动优(矩阵图、树形图、关联图、亲和图、过程决策程序图、活动网络图、优先矩阵)

weixin_42081167的博客 4603

PySide6实战:从环境配置到报表打印的Python GUI工程化指南

Python GUI开发已从脚本工具阶段迈入商业级桌面应用交付新阶段。PySide6作为Qt 6官方Python绑定,依托C++17重构、QML双向集成与Wayland原生支持,解决了跨平台渲染、线程安全、类型提示和可维护性等核心问题。其信号-槽机制重塑事件驱动范式,布局管理器与QSS协同实现响应式视觉系统,而pyside6-deploy、Pipenv和增量更新等工程化能力,使‘pyside6做报表预览打印’‘pyside6炫酷界面’等高频需求真正落地为稳定、可交付、易维护的生产系统。

weixin_33884611的博客 526

SBM与超效率SBM模型实战:从原始面板数据到MATLAB高效实现

本文详细介绍了SBM模型与超效率SBM模型的核心原理,并提供了从原始面板数据预处理到MATLAB高效实现的完整实战指南。通过具体代码解析,帮助研究者掌握如何利用MATLAB进行数据标准化、模型构建、效率求解及结果可视化,从而精准评估决策单元的相对效率,尤其适用于在高效单元中进一步精细排名的场景。

weixin_29100399的博客 478

java中自定义结构体,方便解析TCP或者UDP回传byte数组时转为java对象调用

在接受TCP或者UDP数据回传buffer时,可以直接解析成java对象进行处理,因为java中删除了结构体,所以只能自己实现,并且反射后没有顺序,所以必须有order字段

zahuilg10的博客 1746

TortoiseGit提示No supported authentication methods available错误

一、问题 在使用TortoiseGit与远程仓库进行同步代码的时候提示如下错误,即:没有支持认证的方法可用。而GitBash却可以正常使用,不受影响。 通过调查,发现应该是TortoiseGit远程仓库的公匙无法和本地的密匙进行匹配认证造成的(主要是TortoiseGit缺少本地密匙)。由于TortoiseGit的默认网络SSH client是TortoiseGitPlink.exe,如下图所示。因此主要有两种方式来解决该问题: 不修改TortoiseGit的默认网络SSH client,此时需要为To

Jeffxu_lib的博客 2万+

六轴机器人正解

采用的是John H.Craig在【机器人学导论】中的改进DH模型 1.六轴坐标系 2.DH参数 i αi−1\alpha_{i-1}αi−1​ ai−1a_{i-1}ai−1​ did_idi​ θi\theta_iθi​初值 1 0 0 0 0 2 -90 a1a_1a1​ 0 -90 3 0 a2a_2a2​ 0 -90 4 -90 a3a_3a3​ d4d...

m0_37581770的博客 2511

java.net import_import java.net.*;

源代码如下:importjava.net.*;importjava.io.*;publicclassServer{publicstaticvoidmain(Stringargs[]){ServerSocketserver=null;Socketyou=null;Strings=null;DataInputStreamout=n...源代码如下:import java.net.*;import ja...

weixin_33330157的博客 1340

33、嵌入式系统中的内存操作与实时操作系统

本博客详细探讨了嵌入式系统中的内存操作和实时操作系统(RTOS)的基本原理及应用。内容涵盖C、C++和MicroPython三种语言下的SDRAM读写示例,并结合机器人真空吸尘器的实际应用说明内存的使用场景。此外,还介绍了RTOS的核心概念、组件及其工作机制,包括任务、事件、互斥锁、信号量、队列等,并以FreeRTOS和Mbed OS为例展示了RTOS的配置与使用方法。最后,通过常见问题和实践项目加深对嵌入式系统开发的理解。

zz67890的博客 144

基于Java的Socket实现TCP连接

Socket是两台主机之间的一个连接。它可以完成7个基本操作:连接远程机器,发送数据,接收数据,关闭连接,绑定端口,监听入站数据,在绑定端口上接受来自远程机器的连接。socket中TCP的三次握手建立连接:tcp建立连接要进行“三次握手”,即交换三个分组。大致流程如下:当客户端调用connect时,触发了连接请求,向服务器发送了SYN J包,这时connect进入阻塞状态;服务器监听到连接请求,即收到SYN J包,调用accept函 数接收请求向客户端发送SYN K ,ACK J+1,这时accept进入阻

毕业作品网站 2403

【Java基础知识 1】Java入门级概述

优快云最强Java专栏,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程、Java代码实例,理论结合实战,实现Java的轻松学习。

学Java,找哪吒 16万+

Allegro如何输出ODB文件操作指导

在PCB设计完成之后,需要输出生产文件用于生产加工,除了gerber文件可以用生产制造,ODB文件同样也可以用于生产,如下图。用Allegro如何输出ODB文件,具体操作如下。如何输出ODB文件操作指导。

weixin_54787054的博客 7203

Java通过Socket进行TCP连接

Java通过Socket进行TCP连接

m0_56366502的博客 613

基于FPGA的车道线检测系统设计

本文设计了一种基于FPGA的车道线检测系统,采用Altera Cyclone IV EP4CE10F17C8作为主控芯片,结合OV7725摄像头和LCD显示屏实现实时车道线检测。系统通过硬件流水线处理架构,依次完成图像采集、灰度转换、中值滤波、Sobel边缘检测和Hough变换直线识别等功能模块。所有模块均采用Verilog HDL实现,充分利用FPGA的并行处理能力,显著提升了系统响应速度。测试结果表明,该系统能够有效检测道路车道线,满足实时性要求,为ADAS系统提供了一种高效的硬件解决方案。

huanghm88的专栏 121

java socket序列化_通过socket连接传递java对象(对象序列化)

当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。 把Java对象转换为字节序列的这篇文章主要实现的是j:通过socket传递Java对象。采用的方法就是对象序列化。方法是:通过socket建立c/s连接;通过ObjectOutp...

weixin_29977617的博客 731

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

通过socket连接传递java对象(对象序列化

文章主要实现的是j:通过socket传递Java对象。采用的方法就是对象序列化。方法是:通过socket建立c/s连接;通过ObjectOutputStream,ObjectOutputStream 读写对象。唯一需要留意的是传递的java 对象需要实现Serializable标记接口。代码包括:java对象类,Employee; socket client类;server类。主要代码如下:j

随风专栏 996

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

[重要]android socket传对象问题

package com.xiaoqiu.util; public class User implements java.io.Serializable { private String name; private String password; public User() { } public User(String name, String password) { thi

爱去玩的专栏 2851

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java高级特性:网络编程

一、Socket 1、Socket通信模型 2、Socket网络编程一般可以分成如下步骤进行 3、Socket中实现对象的传递 4、多线程处理多请求 二、基于UDP协议的Socket编程 1、基于UDP协议的Socket网络编程步骤

qi341500的博客 744

java的net包_六、java.net包

一、java.net包Socket指的是客户端的SocketServerSocket指的是服务器端的Socketaccept()方法用来监听请求二、具体实例一、服务器端一、首先定义服务器端的Scoket:服务器端是用的ServerSocket,通过ServerSocket来定义服务器端我的这个服务所对应的的端口数:ServerSocket serverSocket = newServerSocke...

weixin_32491317的博客 3254

java socket本地通信_Java Socket 通信实例 - 转载

好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些网络编程的基础,这里就不提了,只记录最简单易懂实用的东西。1、首先先来看下基于TCP协议Socket服务端和客户端的通信模型:Socket通信步骤:(简单分为4步)1.建立服务端ServerSocket和客户端Socket2.打开连接到Socket的输出输入流...

weixin_35012566的博客 499

java socket 双向通信_Java修炼——基于TCP协议的Socket编程_双向通信_实现模拟用户登录...

首先我们需要客户端和服务器端。服务器端需要:1.创建ServerSocket对象。2.监听客户端的请求数据。3.获取输入流(对象流)即用户在客户端所发过来的信息。 4.创建用户对象。5.判断用户信息是否正确。6.获取输出端,反馈用户信息。9.关闭流。客户端需要:1.创建Socket对象。2.获取输出流(对象流)。3.创建用户对象,并且赋值...

weixin_36204513的博客 329

学习java的第三十一天。。。(网络编程)

今天是学习java的第三十一天,今天学习了网络编程

qihaojinqiuma的博客 259

一个最简单的RPC调用Demo01

RPC的定义 一个RPC最最简单的过程就是客户端调用服务端的一个方法,服务端返回执行方法的返回值给客户端 前置知识 下面就是一个简单的从数据库中取数据的例子 对注解的解释: @Builder @Data//提供了读写属性,还提供了 equals() hashCode() toString()这些方法 @Builder//这个注解是为类生成相对略微复制的构建器API 就是所谓的提供一个内部的Builder @NoArgsConstructor//这个是生成一个无参的构造函数 @AllArgsConstruc

wzw的博客 540

java socket聊天室

服务端 import javax.naming.ldap.SortKey; import java.io.IOException; import java.net.DatagramSocket; import java.net.ServerSocket; import java.net.Socket; import java.net.SocketException; import java.util.Scanner; public class Server_Chat { private Serv

chocomoss的博客 198

基于java.net.socket包的对象传递

本案例代码使用java.net.socket和java.io包下的相关api实现了对象传递。 相关代码如下: 服务端代码 ServerSocketHomework: package com.etc.test; import java.io.IOException; import java.io.InputStream; import java.io.ObjectIn...

baobiyuan8881的博客 184
上一篇: AJAX
下一篇: servlet线程安全问题
firestone-sh
博客等级 码龄24年 19粉丝 431原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值