`
seya
  • 浏览: 361391 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

tcp 长连接与短连接

    博客分类:
  • Java
 
阅读更多
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,可以说连接任何方式的通信程序

都不存在问题。
分享到:
评论
1 楼 nglxl 2017-02-17  
点赞啊,必须点赞!!深度好文,解决了困扰我多年的疑惑。

相关推荐

    TCP长连接与短连接示意图

    TCP长连接与短连接示意图

    TCP中长连接短连接

    本文将详细探讨TCP中的长连接和短连接,这两种连接方式在实际应用中的差异和选择。 长连接,也称为持久连接,指的是客户端(Client)与服务器端(Server)在完成连接建立后,保持连接状态不立即断开,以便于进行多...

    TCP长短连接简单Demo

    TCP连接分为长连接和短连接,这两种连接方式各有其特点和适用场景。本Demo是用C++语言在VS2017环境下编写的,旨在帮助开发者理解TCP长连接和短连接的实现。 首先,我们要理解TCP连接的基本概念。TCP是一种面向连接...

    基于Apache Mina实现的TCP长连接和短连接实例

    TCP连接分为两种类型:长连接和短连接。 1. **TCP短连接**:在短连接中,每次通信结束后,连接都会被关闭。这种方式适用于一次性、短暂的交互,如HTTP请求。然而,频繁的短连接可能会增加握手和释放连接的开销,...

    TCP/IP长连接和短连接

    在TCP/IP通信程序设计中,长连接和短连接是两种主要的连接方式,它们各自有其特点和适用场景。理解这两种连接方式对于开发者来说至关重要,因为它们直接影响到系统的效率、资源管理和安全性。 **长连接**是指客户端...

    线程、线程池、TCP协议长连接短连接的基本入门知识

    在计算机科学领域,多线程和线程池是并发编程中的关键概念,而TCP协议作为互联网通信的基础,其长连接和短连接特性则直接影响网络应用的性能和效率。本篇文章将深入浅出地介绍这些基础知识,帮助初学者理解并掌握。 ...

    Java实现Socket长连接和短连接

    Socket连接分为两种类型:长连接和短连接。这两种连接方式各有特点,适用于不同的应用场景。 **1. 短连接(Short Connection)** 短连接通常用于一次性、非持久性的通信,如HTTP协议就是典型的短连接。在短连接中...

    [线上问题] “服务端长连接与客户端短连接引起Nginx产生大量\"TIME_WAIT\"状态的线程”的问题分析解决

    本文主要涉及的网络编程知识点包括长连接与短连接的定义和区别、TCP连接的建立与断开过程、以及长连接与短连接的不同使用场景和报文传输方式。 长连接和短连接是两种常见的网络通信模式,长连接也被称为持久连接,...

    Mina实现长连接和短连接实例

    Apache Mina是一个流行的Java框架,专门用于简化和优化网络应用开发,它支持多种协议如TCP/IP、UDP/IP等,并提供了长连接和短连接的支持。在这个实例中,我们将探讨如何使用Mina实现长连接和短连接。 首先,理解长...

    【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—实践篇 - slv

    2. **使用长连接**:减少TCP短连接的使用,尽量维持TCP连接的持久化,以减少TIME_WAIT连接的生成。 3. **延迟关闭连接**:在应用层适当延长连接关闭的时间,让连接在完成更多任务后再进入TIME_WAIT状态。 4. **...

    TCP长连接Socket心跳收发消息

    TCP长连接与心跳机制是确保可靠连接的关键技术,特别是对于那些需要持续通信的服务,如在线游戏、实时聊天、数据同步等。本篇文章将深入探讨TCP长连接Socket以及心跳收发消息的原理和实现方法。 首先,TCP是一种...

    TCP.rar_MFC tcp网络通信_TCP协议mfc_mfc tcp通信_tcp 短连接_tcp短连接

    1. **创建CSocket对象**:首先,你需要创建一个CSocket对象,这将作为TCP连接的基础。 2. **绑定和监听**:然后,服务器端的CSocket对象需要绑定到一个特定的IP地址和端口,并开启监听,等待客户端的连接请求。 3....

    长连接和短连接性能测试结果差异 (1).pdf

    TCP 长连接与短连接是网络通信中的两种不同连接方式,主要区别在于连接的持续时间和资源利用率。短连接通常是一次性操作后立即断开,适用于不频繁的交互,如HTTP请求;而长连接则在多次操作间保持连接,常用于需要...

    Mina长连接短连接实例

    本文将深入探讨Mina框架中的长连接与短连接,并通过提供的Minaclient和MinaHost工程实例进行详细解析。 首先,我们需要了解什么是长连接和短连接。在TCP/IP通信中,短连接是指一次完整的通信过程(如HTTP请求)结束...

    c# Socket长连接 短链接 自己封装 通讯

    2. **长连接与短连接**:在TCP/IP协议中,连接有两种模式。短连接通常用于一次性传输数据,如HTTP请求,连接建立后立即传输数据并关闭。而长连接则保持一段时间的开放状态,允许多次数据交换,如FTP或HTTPS。在C#中...

    socket短连接和长连接 多线程的应用

    "短连接"和"长连接"是Socket连接的两种不同模式,它们在处理网络请求时有着显著的区别。 短连接(Short Connection)通常用于一次性或者较少交互的服务,如HTTP协议就是基于短连接的。在短连接中,每次通信完成后,...

    tcp短连接TIME_WAIT问题解决方法

    tcp连接是网络编程中最基础的概念,基于不同的使用场景,我们一般区分为“长连接”和“短连接”, 长短连接的优点和缺点这里就不详细展开了,有心的同学直接去google查询,本文主要关注如何解决tcp短连接的TIME_WAIT...

    基于ASIO封装的网络库,支持TCP/UDP,支持长连接、短连接,支持组播、单播、广播

    本项目基于ASIO进行封装,提供了对TCP和UDP协议的支持,同时涵盖了长连接、短连接以及组播、单播和广播等高级网络通信模式。现在我们将深入探讨这些知识点。 首先,TCP(Transmission Control Protocol)是一种面向...

    C语言长连接服务器Demo(epoll非阻塞)

    相比短连接,长连接减少了握手和释放连接的开销,提高了系统性能,尤其是在高并发场景下。 C语言中的网络编程主要依赖于套接字(socket)API。创建一个TCP服务器的基本步骤包括:创建套接字、绑定地址、监听连接...

Global site tag (gtag.js) - Google Analytics