Java实现Socket长连接和短连接

探索Java Socket长连接:实现与优化 本文详细讲解了如何在Java中使用Socket实现长连接,包含了基本的客户端-服务器通信示例以及心跳包机制的实现。通过这些示例,开发者可以更好地理解长连接的实现原理,并在实际应用中进行优化和扩展。 阅读详情

1概念

Socket:socket实际上是对TCP/IP进行的封装,我们可以使用socket套接字通过socket来传输。首先我们需要明白的一个概念就是通道,简单地说通道就是两个对端可以随时传输数据的信道。我么常说的所谓建立socket连接,也就是建立了客户端与服务器端的通道。

长短连接:显而易见,长连接也就是这个socket连接一直保持连接,也就是通道一直保持通畅,两个对端可以随时发送和接收数据;短连接就是我们发送一次或有限的几次,socket通道就被关闭了。首先,我们必须明白的是socket连接后,如果没有任何一方关闭,这个通道是一直保持着的,换句话说,如果任何一方都不关闭连接,这个socket连接就是长连接,因此Java中的socket本身就是支持长连接的(如一个简单的实验:服务器端不关闭连接,服务器端每隔10秒发送一次数据,服务器端每次都能正确接受数据,这个实验就可以证明)。

那么既然socket本身是支持长连接的,那么为什么我们还要提短连接的概念呢?试想一个中国移动的短信网关(即通过发布socket通信接口)每时每分都有N多个连接发送短信请求,加入服务器不加任何限制地直接和客户端使用长连接那么可想而知服务器需要承受多么大的压力。所以一般的socket服务器端都是会设定超时时间的,也就是timeout,如果超过timeout服务器没有接收到任何数据,那么该服务器就会关闭该连接,从而使得服务器资源得到有效地使用。

2 如何实现长短连接

在1中我们已经介绍了长短连接的概念,服务器如果超过timeout时间接收不到客户端的通信就会断开连接,那么假如客户端在timeout时间前一秒(或者更短的时间)发送一条激活数据来使服务器端重新计时,如此重复就能保证服务器一直不能进入timeout时间,从而一直保持连接,这就是长连接的实现原理。下面我们通过一张图说明:


由上图可见,是否是长连接完全取决于客户端是否会在timeout时间发送心跳消息,因此长短连接是和客户端相关的,服务器端没有任何区别(只不过服务器端需要设定timeout而已)。

代码实现可参照:http://download.youkuaiyun.com/detail/feichenwangyalin/7951457

2021-06-11 Java Socket短连接入门 Socket通讯顺序时不能颠倒,每次看别人的案例都倒在顺序上了。 服务端必须先接收消息再回复消息。 客户端必须先发送消息再接收消息。 流的关闭似乎是用socket.shutdownInput()和socket.shutdownOutput()来控制的,不能自己手动关闭流。 socket.getInputStream()对应socket.shutdownInput() socket.getOutputStream()对应socket.shutdownOutput() 意义应该是告诉对方我已经结束输入流或输出流 阅读详情

相关推荐

c# tcp 基于完成端口开发 高性能 高并发 吞吐量大 包含服务端 客户端完整代码 支持最大连接数支持65535个长连接

c# tcp 基于完成端口开发 高性能 高并发 吞吐量大 包含服务端 客户端完整代码 支持最大连接数支持65535个长连接

java socket长连接实现

java socket长连接的实现代码客户端代码合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 网络编程都是最底层都是基于socket的,鉴于客户端需要一直发送消息,使用短连接就不适合了,因为建立socket连接后发送完数据又马上断开连接。

weixin_43686413的博客 7889

c#完全端口高性能网络TCP服务器和客户端源码

一、源码特点 1、采用完成端口(IOCP)编写的高性能TCP网络服务器,进行收发测试代码。 2、报文收发处理速度非常快 3、pu使用率低 4、测试环境:双核2G内存 5、自带客户端和服务器通讯代码 6、服务器能连接5000以上客户端连接,上限取决于服务器性能了 二、功能介绍 1、实现网络通讯类的封装,这些类可以在项目中直接使用; 2、实现高并发情况下,数据接收和发送性能测试。 三、注意事项 1、开发环境为Visual Studio 2010,使用.net 4.0开发; 2、默认监听端口9900 3、将IP地址更换成本机的,再进行调试 4、如果提示本机积极拒绝访问,就把防火墙关了试试

java--socket长连接与短连接介绍

长连接与短连接 所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持。  短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,一般银行都使用短连接。   比如http的,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。 

GP的空间 2386

【一键搞定】ThinkPHP6.0.2+PHPStudy+Composer极速安装指南——附完整下载包与避坑技巧

本文提供了一份ThinkPHP6.0.2的完整下载包,并详细介绍了如何配合PHPStudy和Composer进行极速安装与配置。指南涵盖了环境准备、Composer国内镜像加速、项目部署及常见避坑技巧,旨在帮助开发者,尤其是内网或网络不佳的用户,快速搭建可运行的TP6开发环境,绕过依赖下载的繁琐步骤。

assembly8low的博客 1007

114.Android简单的动态切换app的图标,两种方式

- 默认的图标-->-- 需要切换的图标-->android:label="短信"-- 默认activity-->

曹二少的博客 5572

java实现socket长连接_java如何实现Socket的长连接和短连接

讨论Socket必讨论长连接和短连接一、长连接和短连接的概念1、长连接与短连接的概念:前者是整个通讯过程,客户端和服务端只用一个Socket对象,长期保持Socket的连接;后者是每次请求,都新建一个Socket,处理完一个请求就直接关闭掉Socket。所以,其实区分长短连接就是:整个客户和服务端的通讯过程是利用一个Socket还是多个Socket进行的。可能你会想:这还不简单,长连接不就是不关S...

weixin_42515631的博客 4365

C#开发医学影像胶片打印系统(一):万能花式布局的实现思路

本篇文章将介绍开发医学影像胶片打印系统(printscu模式)遇到不规则排版时的一种思路,一般来讲,医院打印胶片时都是整张胶片打印,但有时需要将多个病人或一个病人的多个检查打印在同一张胶片上,这时候就需要不规则排版来满足打印需求,使胶片利用率最大化。

罗万科技的博客 1325

java如何实现Socket的长连接和短连接

总的来说,长连接和短连接在Java中主要通过控制Socket连接的开启和关闭来实现。短链接在每次数据交换后都会关闭链接,而长链接则会保持开启状态直到明确要求断开。在Java中,Socket编程是网络编程的基础,它可以实现客户端和服务器之间的通信。根据连接持续时间和使用方式的不同,Socket连接可以分为长连接和短连接。在长链接中,客户端和服务器建立连接后,会保持这个链接的开启状态,直到客户端或服务器明确要求断开连接。首先我们来看看如何实现短连接。在短链接中,客户端向服务器发送请求后就断开了链接。

高性价比服务器就选:蓝易云 821

Palantir的本体论建模跟数仓建模的异同

Palantir的Foundry Ontology通过构建组织的数字孪生体,将数据集和模型映射为对象类型、属性、链接和操作类型,形成完整的语义知识网络。与传统数仓建模相比,本体建模以业务问题为驱动,强调细粒度语义和实时决策能力,采用图语义技术实现灵活的映射关系。

轩哥的个人研究和成长记录 1594

实验三 Gmapping建图

自主移动机器人第三次实验课,内容包括:(1)turtlebot的gmapping建图;(2)rosbag的使用;(3)gazebo中的gmapping建图。

lj164567487的博客 4648

Socket的长连接和短连接-Java实现-关键点

== = - Socket的长连接和短连接-Java实现-关键点  https://www.cnblogs.com/lcplcpjava/p/6581179.html   一、长连接和短连接的概念   1、长连接与短连接的概念:前者是整个通讯过程,客户端和服务端只用一个Socket对象,长期保持Socket的连接;后者是每次请求,都新建一个Socket,处理完一个请求就直接关闭掉...

fantaxy025025的专栏 356

Android13无重力感应系统修改触摸屏跟随屏幕显示旋转方向旋转

在实际产品中设计时会移除重力传感器。当设备缺少重力传感器时,系统无法使用该传感器提供的方向数据来确定屏幕旋转的方向。Android 系统中由于移除重力传感器导致的默认显示方向旋转引起触摸屏与屏幕显示不一致问题,主要是由于缺乏方向检测和触摸坐标的正确转换。通过使用替代传感器(如陀螺仪)、手动配置方向、调整触摸事件坐标和 UI 布局,可以解决这个问题。开发者需要确保在设备没有重力传感器的情况下,能够通过其他方法推测方向,并确保触摸事件和 UI 动作能够正确响应设备的旋转。

weixin_35723192的博客 803

Java实现Socket长连接和短连接示例代码

Java实现Socket长连接和短连接示例代码 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了Java语言实现Socket长连接和短连接的示例代码,帮助开发者理解并掌握在不同场景下Socket连接的应用。通过阅读代码,您可以了解到长连接与短连接的实现原理和区别。具体实现细节和原理解析,可以参考发布者的个人博客文章。 内容概述 长连接示例代码 短连接示例代码 连接原...

gitblog_06741的博客 330

基于FPGA的数字信号处理(17)--定点运算的实现实例(饱和Saturate与四舍五入Round)

基于FPGA的数字信号处理(17)--定点运算的实现实例(饱和Saturate与四舍五入Round)

孤独的单刀 2960

家庭弱电最实用的功能,网线面板如何接线

按照规范,我国宽带入户线按B接法,即568B标准,从后面看,从左到右:1橙白,2橙,3绿白,4蓝,5蓝白,6绿,7棕白,8棕,即和水晶头的接法一致。做水晶头的时候,要注意排好线序,把8根线的头剪齐,留下大约1.8公分,插入水晶头的时候,水晶头要尾巴向下,把线插到水晶头的底端,用网线钳子夹紧。具体是:第1脚——橙白、第2脚——橙色、第3脚——绿白、第4脚——蓝色、第5脚——蓝白、第6脚——绿色、第7脚——棕白、第8脚——棕色,除了四根带颜色的线橙、绿、蓝、棕外,每一根白线上都有线标橙、绿、蓝、棕。

qq_43416206的博客 1674

Java实现Socket长连接和短连接示例代码:助力开发者深入理解网络通信

Java实现Socket长连接和短连接示例代码:助力开发者深入理解网络通信 去发现同类优质开源项目:https://gitcode.com/ 项目核心功能/场景 使用Java实现Socket长连接和短连接,适用于不同网络通信场景。 项目介绍 在网络编程中,Socket是一种常见的通信机制,用于在网络上不同主机间进行数据交换。Java实现Socket长连接和短连接示例代码项目,为广大开发者提供了一个...

gitblog_06767的博客 371

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

java socket长连接 短连接_Socket的长连接和短连接

讨论Socket必讨论长连接和短连接一、长连接和短连接的概念1、长连接与短连接的概念:前者是整个通讯过程,客户端和服务端只用一个Socket对象,长期保持Socket的连接;后者是每次请求,都新建一个Socket,处理完一个请求就直接关闭掉Socket。所以,其实区分长短连接就是:整个客户和服务端的通讯过程是利用一个Socket还是多个Socket进行的。可能你会想:这还不简单,长连接不就是不关S...

weixin_34205814的博客 799

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

长连接和短连接

网络模型分为了TCP/IP四层模型及ISO七层模型,当前大家用的都是基于TCP/IP来划分的。长连接和短连接是描述传输层协议的,依据是否进行会话保持分为了长连接和短连接。

忙碌的菠萝 2049

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

TCP是怎么处理长连接、短连接

TCP 协议是一种面向连接的协议,即在通信双方之间建立连接后才能开始传输数据。TCP 协议通过三次握手建立连接,在连接建立后就可以保持长时间的连接,以实现长连接。在 TCP 协议中,数据被分成多个数据包进行传输,每个数据包都有序号和确认应答机制,以保证数据的完整性和正确性。当通信双方完成数据传输后,可以通过四次挥手断开连接。如果应用程序需要保持长连接,通常需要在客户端和服务器端都设置一个超时时间,如果在超时时间内没有收到数据,则会发送心跳包来保持连接状态。

weixin_43102784的博客 1344

长连接及Java Socket实现

以下是Tcp、UDP的字节流和字符流的Socket使用,可用其直接传输文件及字符数据。Socket默认是不关闭的,除非手动关闭,建立连接的两端可互相发送信息,连接的长短主要针对的是连接的时间,长时间不关闭的连接即长连接,短连接即建立连接的两端在发送一次或几次数据后很快关闭Socket的连接。

六月长安的博客 4万+

java socket 长连接 短连接

java   socket   长连接  短连接 长连接 是一旦一个客户端登陆上服务器,其与服务器之间的连接就不关闭,不管他们之间进行了多少次交易,直到客户端退出登陆或网络出现故障。这种技术在联机交易系统实现有利于提高效率。 短连接是客户端每发一个请求就与服务器建立一个连接,交易完成后关闭连接,这种技术实现较长连接 简单。 长:connect连上后不断开, 进行N次收发操作. 短...

hongliangpan 178
上一篇: 如何使用axis构建SOAP应用程序
下一篇: oracle for update实现线程同步取数据
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值