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

长连接与短连接的区别(tcp socket http概念原理是一样的)

    博客分类:
  • Java
阅读更多

一、长连接与短连接:

长连接: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,可以说连接任何方式的通信程序

都不存在问题。

分享到:
评论

相关推荐

    Java实现Socket长连接和短连接

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

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

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

    TCP长短连接简单Demo

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

    TCP/IP和SOCKET基本原理

    TCP/IP和SOCKET基本原理是网络通信中的重要概念,它们是构建互联网应用的基础。TCP/IP协议族是一个分层的通信模型,主要包含四个层次:网络接口层、网络层、传输层和应用层。TCP/IP的核心协议包括IP、TCP、UDP等,...

    C# socket异步长连接

    本文将深入探讨"C# socket异步长连接"这一主题,包括其概念、工作原理以及如何在实际开发中实现。 首先,我们要理解什么是Socket。Socket是网络通信中的一个接口,它允许应用程序通过TCP/IP协议与另一台计算机进行...

    TCP socketDemo

    TCP套接字(TCP Socket)是网络通信中的一个重要概念,它是基于传输控制协议TCP的应用程序编程接口API,用于实现两台计算机之间的可靠、面向连接的数据通信。在这个"TCP socketDemo"中,我们很可能会看到一个简单的...

    C# Socket连接池

    本文将深入探讨“C# Socket连接池”的实现原理、优势以及如何利用线程池技术来构建和优化它。同时,我们也会提及Windows计数器在监控和分析线程池性能中的作用。 首先,理解Socket连接池的概念。Socket是网络通信的...

    TCP_Socket.rar

    在IT领域,网络编程是不可或缺的一部分,而TCP Socket编程则是实现网络通信的核心技术之一...通过分析和学习"TCP_Socket.rar"中的代码示例,开发者可以深入理解TCP Socket的工作原理,并应用于实际的网络应用程序开发。

    c# tcpsocket 原生代码编写 客户端和服务端程序

    5. 在Accept方法的循环中,接收客户端连接请求,返回一个新的Socket对象,用于与特定客户端通信。 6. 通过新Socket对象的Receive和Send方法进行数据收发,通常配合使用Buffer进行缓冲处理。 7. 数据交互完成后,关闭...

    socket原理关于tcp与udp的基础入门

    本篇将深入探讨Socket的基本概念、TCP与UDP的区别,以及Socket的工作流程。 首先,Socket可以比喻为网络通信的两端点,一个位于客户端(ClientSocket),另一个位于服务器端(ServerSocket)。它们之间建立连接的...

    TCPSocket编程客户端和服务端

    压缩包文件"TCPSocket"可能包含了示例代码,这些代码可以帮助初学者更好地理解TCP Socket编程的实践。通过阅读和运行这些代码,你可以学习如何在Python、C++、Java等语言中实现TCP Socket客户端和服务端。 在编程...

    TCP socket编程

    本教程旨在帮助初学者理解TCP Socket编程的基本概念,并通过简单的实例演示如何实现客户端与服务器端的交互。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它确保...

    tcp socket通讯库

    TCP套接字(TCP Socket)是网络编程中的一个重要概念,它是基于传输控制协议TCP的应用程序接口,用于在互联网上实现两台计算机之间的可靠通信。在本文中,我们将深入探讨TCP Socket的基本原理、如何封装以及如何在...

    tcp_client_socket.rar_TCP socket_client_socket_socket tcp_socket

    TCP socket客户端是网络通信的一端,它通过TCP协议与服务器建立连接,发送和接收数据。在TCP协议中,客户端首先发起连接请求,经过三次握手与服务器建立起连接,然后可以进行数据传输,最后通过四次挥手断开连接。这...

    最简单的TCP模式SOCKET代码

    总的来说,TCP模式的SOCKET编程涉及网络通信的基本原理,包括连接建立、数据传输和连接关闭。理解这些概念对于任何涉及网络编程的IT专业人员都是至关重要的。通过实践这些简单的代码示例,你可以深入掌握TCP SOCKET...

    Android-Socket长连接通信心跳包消息回调Java服务端

    在Android开发中,网络编程是不可或缺的一部分,尤其是对于需要实时通信的应用来说,Socket长连接尤为重要。本主题将深入探讨如何实现“Android-Socket长连接通信心跳包消息回调Java服务端”的技术细节。 首先,...

    深入解析TCP、HTTP、Socket、Socket连接池.rar

    本资源“深入解析TCP、HTTP、Socket、Socket连接池.rar”旨在帮助开发者深入理解这些核心概念,并探讨Socket连接池的使用。 TCP是一种面向连接的、可靠的传输层协议,它保证了数据的顺序传输和无损传输。TCP通过三...

    socket长连接

    在`socket(tcp长连接)`的压缩包文件中,可能包含了实现上述功能的示例代码,包括服务端和客户端的Java或Python程序,通过这些代码可以更直观地了解Socket长连接的工作原理和实现方式。 总之,Socket长连接是网络...

    基于tcp的socket编程

    本篇文章将深入探讨基于TCP的Socket编程,包括基本概念、服务器端和客户端的实现,以及常见问题。 首先,TCP套接字(Socket)是应用层与TCP层之间的接口,它允许程序通过TCP协议发送和接收数据。TCP保证了数据的...

    TCP_Socket.rar_socket tcp

    首先,TCP Socket编程涉及到的主要概念有服务器端(Server)和客户端(Client)。服务器端通常监听特定的端口号,等待客户端的连接请求,而客户端则通过发起连接请求与服务器建立连接。在TCP中,这一过程被称为三次...

Global site tag (gtag.js) - Google Analytics