`
wanghailiang333
  • 浏览: 199596 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

TCP长链接问题

阅读更多

今天看到一关于Android推送实现的文章,想记录下来

 

因为是一片关于一个服务推广的广告文章,所以地址就不给出来了。

 

摘“为了解决数据同步的问题,在手机平台上,常用的方法有2种。一种是定时去服务器上查询数据,也叫Polling,还有一种手机跟服务器之间维护一个 TCP 长连接,当服务器有数据时,实时推送到客户端,也就是我们说的 Push。”

 

在做过的项目中需要使用一个远程的链接,链接进入局域网中进行远程的管理。实现的功能很简单,所以想都没想就使用UDP实现了,但一实验发现问题的所在。。。UDP在NAT的环境中通信会有问题的。

 

忙乎了一个晚上才把UDP的换成TCP的链接,这样就OK了

 

这样做是因为TCP链接可以穿越NAT,与外部建立一个通信通道进行数据传输,也就是所谓的TCP长链接。

 

之所以TCP能有长链接而UDP没有首先是因为TCP是面向链接的,而UDP则不是,其实还有一个重要的角色发挥着重要的作用,那就是NAT。

 

因为TCP面向链接的特性使得NAT会为TCP的链接保持一个地址端口缓存,TCP的链接可以通过这个缓冲顺利的与外网通信而不受NAT的阻拦。

 

UDP是非面向链接的,所以NAT不会为UDP保持一个地址端口缓存,UDP出去容易,但再进来则就不可能了。

 

当然,一个TCP的链接不可能无限制的一直存在着,比如程序异常关闭链接,NAT缓存清理等等,这些都会导致TCP链接的断开,这些就需要一个轮询的机制,保证链接一直存在着,达到所谓的“TCP长链接”

 

其实这也算是一种NAT穿越技术了。

 

 

 

2
1
分享到:
评论

相关推荐

    TCP中长连接短连接

    TCP连接方式的选择取决于应用场景。长连接适合于需要频繁交互且连接保持期间数据传输量较大的情况,如Websocket服务、数据库连接等。而短连接则适用于偶尔交互且数据量较小的场景,如HTTP请求。 通信方式还包括同步...

    TCP长短连接简单Demo

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

    微信小程序源码 TCP,IP长连接(学习版)

    微信小程序源码 TCP,IP长连接(学习版)微信小程序源码 TCP,IP长连接(学习版)微信小程序源码 TCP,IP长连接(学习版)微信小程序源码 TCP,IP长连接(学习版)微信小程序源码 TCP,IP长连接(学习版)微信小程序源码 TCP,IP长...

    微信小程序 TCP,IP长连接 (源码)

    微信小程序 TCP,IP长连接 (源码)微信小程序 TCP,IP长连接 (源码)微信小程序 TCP,IP长连接 (源码)微信小程序 TCP,IP长连接 (源码)微信小程序 TCP,IP长连接 (源码)微信小程序 TCP,IP长连接 (源码)微信小程序 TCP,IP长...

    java建立TCP长链接

    在TCP连接建立之前,需要经过三次握手的过程,而在连接结束后,通过四次挥手断开连接。 在Java中,我们通常使用`java.net.Socket`类和`java.net.ServerSocket`类来实现TCP通信。以下是建立TCP长连接的基本步骤: 1...

    TCP长连接与短连接示意图

    TCP长连接与短连接示意图

    基于JMeter模拟1万个终端设备,进行TCP长连接性能测试1

    在本文中,我们将深入探讨如何使用Apache JMeter进行TCP长连接性能测试,特别是在模拟1万个终端设备场景下。首先,我们需要了解的是物联网(IoT)背景下的设备通信协议,这通常涉及身份认证、数据传输等多个步骤。在这...

    android测试例子 TCP长连接

    Socket提供了网络通信的基本接口,允许我们创建到远程主机的TCP连接。创建Socket时,需要指定服务器的IP地址和端口号。然后,我们可以使用Socket的输入流和输出流进行数据的读写操作,实现客户端和服务器的数据交换...

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

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

    最简单清楚TCP客户端长连接.rar

    在这个示例中,我们主要关注QTcpSocket,它是处理TCP连接的基础类。 TCP长连接是指在一次连接建立后,客户端和服务器之间可以进行多次数据传输,而不需要频繁地建立和断开连接。这种方式提高了网络效率,减少了握手...

    TCP长连接Socket心跳收发消息

    TCP连接一旦建立,双方可以在任意时刻发送数据,直到一方发起四次挥手的断开连接过程。这就是所谓的“短连接”。然而,在某些场景下,频繁地建立和断开连接会增加额外的开销,因此TCP长连接应运而生。 TCP长连接是...

    Android socket实现Tcp长连接,断开自动重连

    手写简化版tcp长链接的socket实现,主要功能有断开重连,以及收发读取解码解析,适用于需要用到长链接的原生开发。

    tcp全连接和半连接问题查询步骤

    TCP 全连接和半连接问题查询步骤 TCP 是一种面向连接的传输层协议,保证了数据的可靠传输。然而,在实际应用中,我们经常会遇到连接不稳定、连接不上的问题。这是由于 TCP 的半连接队列和全连接队列的溢出所导致的...

    更改TCP并发连接数

    TCP并发连接数是指同一时间一个用户或进程可以建立的TCP连接的最大数量。在打印机共享环境中,如果多个用户尝试同时连接到同一台打印机,可能就会遇到这个限制,从而影响打印效率。 描述中提到的问题解决方案可能是...

    微信小程序——TCP,IP长连接(截图+源码).zip

    微信小程序——TCP,IP长连接(截图+源码).zip 微信小程序——TCP,IP长连接(截图+源码).zip 微信小程序——TCP,IP长连接(截图+源码).zip 微信小程序——TCP,IP长连接(截图+源码).zip 微信小程序——TCP,IP长...

    C#连接ModbusTCP连接示例

    总的来说,"C#连接ModbusTCP连接示例"涵盖了网络通信、设备控制和用户界面设计等多个方面,对于理解和实践工业自动化系统的开发具有重要意义。无论是WinForm还是WPF,掌握这些技能都将使你在面对类似项目时更加...

    Window下杀掉TCP连接

    8. **网络诊断**:Windows内置的网络诊断工具可以帮助识别和解决TCP连接问题。如果连接异常,可以尝试运行诊断,系统可能会自动修复或提供解决方案。 9. **TCP/IP配置**:了解TCP/IP协议的工作原理,例如熟知的三次...

    TCP/IPsocket长连接

    首先,我们来详细了解一下TCP连接。TCP建立连接需要经过三次握手过程,确保双方都有能力并愿意进行通信。连接建立后,数据可以双向流动。在长连接中,一旦连接建立,就会保持开放状态,直到一方主动关闭连接或因网络...

    TCP/IP长连接和短连接

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

    小程序源码 TCP,IP长连接 (代码+截图)

    小程序源码 TCP,IP长连接 (代码+截图)小程序源码 TCP,IP长连接 (代码+截图)小程序源码 TCP,IP长连接 (代码+截图)小程序源码 TCP,IP长连接 (代码+截图)小程序源码 TCP,IP长连接 (代码+截图)小程序源码 TCP,IP长连接 ...

Global site tag (gtag.js) - Google Analytics