插座长连接和短连接的区别
长连接与短连接的区别(tcp socket http概念原理是一样的) 一、长连接与短连接:长连接:client方与server方先建立连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在。此种方式常用于P2P通信。短连接:Client方与server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此方式常用于一点对多点通讯。C/S通信。二、长连接与短连接的操作过程:短连接的操作步骤是:建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连接长连接的操作步骤是:建立连接——数据传输...(保持连接)...数据传输——关闭连接三、长连接与短连接的使用时机:长连接:短连接多用于操作频繁,点对点的通讯,而且连接数不能太多的情况。每个TCP连接的建立都需要三次握手,每个TCP连接的断开要四次握手。如果每次操作都要建立连接然后再操作的话处理速度会降低,所以每次操作下次操作时直接发送数据就可以了,不用再建立TCP连接。例如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,频繁的socket创建也是对资源的浪费。短连接:web网站的http服务一般都用短连接。因为长连接对于服务器来说要耗费一定的资源。像web网站这么频繁的成千上万甚至上亿客户端的连接用短连接更省一些资源。试想如果都用长连接,而且同时用成千上万的用户,每个用户都占有一个连接的话,可想而知服务器的压力有多大。所以并发量大,但是每个用户又不需频繁操作的情况下需要短连接。总之:长连接和短连接的选择要视需求而定。四、发送接收方式:1、异步:报文发送和接收是分开的,相互独立,互不影响的。这种方式又分两种情况:异步双工:接收和发送在同一个程序中,有两个不同的子进程分别负责发送和接送。异步单工:接送和发送使用两个不同的程序来完成。2、同步:报文发送和接收是同步进行,即报文发送后等待接送返回报文。同步方式一般需要考虑超时问题,试想我们发送报文以后也不能无限等待啊,所以我们要设定一个等待时候。超过等待时间发送方不再等待读返回报文。直接通知超时返回。五、报文格式:通信报文格式多样性更多,相应地就必须设计对应的读写报文的接
收和发送报文函数。阻塞与非阻塞方式1、非阻塞方式:读函数不停的进行读动作,如果没有报文接收到,等待一段时间后超时返回,这种情况一般需要指定超时时间。2、阻塞方式:如果没有接收到报文,则读函数一直处于等待状态,知道报文到达。循环读写方式1、一次直接读写报文:在一次接收或发送报文动作中一次性不加分别地全部读取或全部发送报文字节。2、不指定长度循环读写:这一版发生在短连接进程中,受网络路由等限制,一次较长的报文可能在网络传输过程中被分解成很多个包,一次读取可能不能全部读完一次报文,这就需要循环读取报文,知道读完为止。3、带长度报文头循环读写:这种情况一般在长连接中,由于在长连接中没有条件能够判断循环读写什么时候结束。必须要加长度报文头。读函数先是读取报文头的长度,再根据这个长度去读报文,实际情况中,报头码制格式还经常不一样,如果是非ASCII的报文头,还必须转换成ASCII常见的报文头编制有:1、n个字节的ASCII码。2、n个字节的BCD码。3、n个字节的网络整型码。
以上是几种比较典型的读写报文方式,可以与通信方式模板一起 预先提供一些典型的API读写函数。
当然在实际问题中,可能还必须编写与对方报文格式配套的读写API. 在实际情况中,往往需要
把我们自己的系统与别人的系统进行连接, 有了以上模板与API,可以说连接任何方式的通信程序
都不存在问题。
下一篇: 数字仓库建设的七项规范指南
推荐阅读
-
xrdp 和 vnc 的区别,2 种远程连接方法 xrdp 和 vnc
-
防火墙长连接和短连接
-
插座长连接和短连接的区别
-
网络电话 VoWifi VoLTE SIP 的区别和连接 (II)
-
带您了解 USB、Type-C 和 Thunderbolt 三种接口的区别和连接的文章
-
http 的长连接和短连接(有史以来最概括的连接!)。
-
TCP 长连接和短连接的区别-3.
-
网络连接中 [无线局域网]、[宽带连接]、[本地连接] 和 [以太网] 的区别
-
[tcp]网络连接中的长连接和短连接是什么意思?-参考
-
玩转Java底层:JMX详解 - jconsole与自定义MBean监控工具的实际应用与区别" 在日常JVM调优中,我们熟知的jconsole工具通过JMX包装的bean以图形化形式展示管理数据,而像jstat和jmap这类内建监控工具则由JVM直接支持。本文将以jconsole为例,深入讲解其实质——基于JMX的MBean功能,包括可视化界面上的bean属性查看和操作调用。 MBeans在jconsole中的体现是那些可观察的组件属性和方法,如上图所示,通过名为"Verbose"的属性能看到其值为false,同时还能直接操作该bean的方法,例如"closeJerryMBean"。 尽管jconsole给我们提供了直观的可视化界面,但请注意,这里的MBean并非固定不变,开发者可根据JMX提供的接口将自己的自定义bean展示到jconsole。以下步骤展示了如何创建并注册一个名为"StudyJavaMBean"的自定义MBean: 1. 首先定义接口`StudyJavaMBean`,接口需遵循MBean规范,即后缀为"MBean"且包含getter方法代表属性,如`getApplicationName`,和无返回值的setter方法代表操作,如`closeJerryMBean`。 ```java public interface StudyJavaMBean { String getApplicationName(); void closeJerryMBean(); } ``` 2. 编写接口的实现类`StudyJavaMBeanImpl`,实现接口中的方法: ```java public class StudyJavaMBeanImpl implements StudyJavaMBean { @Override public String getApplicationName() { return "每天学Java"; } @Override public void closeJerryMBean() { System.out.println("关闭Jerry应用"); } } ``` 3. 在代码中注册自定义MBean,涉及的关键步骤包括: - 获取平台MBeanServer - 定义ObjectName,指定唯一的MBean标识符 - 注册MBean到服务器 - 启动RMI连接器服务,以便jconsole能够访问 ```java public void registerMBean() throws Exception { // ... 具体实现省略 ... } ``` 实际运行注册后的MBean,您将在jconsole中发现并查看自定义bean的属性和调用相关方法。然而,这种方式相较于传统的属性/日志查看和HTTP接口,实用性相对有限,可能存在潜在的安全风险。但不可否认的是,JMX及其MBean机制对于获取操作系统信息、内存状态等关键性能指标仍然具有重要价值。例如: 1. **获取操作系统信息**:通过JMX MBean,可以直接获取到诸如CPU使用率、操作系统版本等系统级信息,这对于资源管理和优化工作具有显著帮助。