`

Udp实现通信DEMO

 
阅读更多

TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。




UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!
UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping”操作发送4个数据包(如图2所示)。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效果高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。


tcp协议和udp协议的差别
TCP UDP
是否连接 面向连接 面向非连接
传输可靠性 可靠 不可靠
应用场合 传输大量数据 少量数据
速度 慢 快


UdpTest1.java


UdpTest2.java



分享到:
评论

相关推荐

    Qt简单的UDP通信demo

    **Qt简单的UDP通信demo** Qt是一个跨平台的C++应用程序开发框架,广泛应用于GUI应用程序、网络编程、多媒体处理等多个领域。在本示例中,我们将深入探讨如何在Qt中实现一个简单的UDP(用户数据报协议)通信。UDP是...

    udp server client demo

    综上所述,这个"udp server client demo"是一个基础的UDP通信示例,涵盖了UDP服务器和客户端的基本操作,以及在局域网环境中的应用。开发者可以通过这个示例了解如何使用UDP进行数据交换,并以此为基础扩展出更复杂...

    QTUDP通信Demo

    在"QTUDP通信Demo"中,我们将探讨如何使用Qt库来实现UDP通信。 首先,理解UDP通信的基本原理至关重要。UDP不建立连接,而是直接发送数据报,每个数据报包含完整的源和目的地址,因此它可以独立于其他数据报发送和...

    android UDP通信demo,仅文字

    在这个“android UDP通信demo”中,我们将探讨如何在Android设备之间通过UDP实现简单的文本信息交换。 首先,了解UDP通信的基本原理是必要的。与TCP(Transmission Control Protocol)不同,UDP不建立连接也不维护...

    服务端基于MINA2的UDP双向通信Demo演示(Java客户端)

    标题中的“服务端基于MINA2的UDP双向通信Demo演示(Java客户端)”是指使用Apache MINA框架在Java中实现的UDP(用户数据报协议)的双向通信示例。MINA是一个高性能、异步的网络应用程序框架,常用于构建网络服务,如...

    qt中的双向udp通信demo

    单机上的双向udp通信。 在Qt中提供了QUdpSocket 类来进行UDP数据报(datagrams)的发送和接收。这里我们还要了解一个名词Socket,也就是常说的“套接字”。Socket简单地说,就是一个IP地址加一个port端口 。因为我们...

    labview UDP通信demo

    总结,"labview UDP通信demo"是一个基础但实用的示例,展示了如何在LabVIEW环境中实现UDP通信。通过学习和理解这个Demo,开发者可以进一步扩展和定制自己的UDP通信应用,满足各种实时数据交换的需求。

    服务端基于MINA2的UDP双向通信Demo演示(MINA2服务端)

    “服务端基于MINA2的UDP双向通信Demo演示(MINA2服务端)” 这个标题表明这是一个使用MINA2框架在服务端实现的UDP(User Datagram Protocol)双向通信的示例代码。MINA2是一个开源的Java网络应用程序框架,它简化了...

    C# 编写winform程序实现UDP通信

    在C#中,我们通常使用System.Net.Sockets命名空间中的UdpClient类来处理UDP通信。 首先,我们需要创建两个WinForm应用程序,分别代表UDP通信的两个节点,我们称它们为UDP Host A和UDP Host B。这两个程序都需要包含...

    VS2017实现Udp socket通信(C++)

    首先,为了在VS2017中建立UDP通信,我们需要包含必要的头文件,如`winsock2.h`和`ws2tcpip.h`。确保在项目设置中链接相应的库,如`ws2_32.lib`。 ```cpp #include #include #pragma comment(lib, "ws2_32.lib") `...

    Windows下面的UDP和TCP通信demo

    在UDP通信中,开发者需要自己处理数据的排序和错误检测。在Windows下,使用UDP编程同样基于套接字API,只是使用`sendto()`和`recvfrom()`函数进行数据的发送和接收。 "TCP_Server.sln"可能是使用Visual Studio创建...

    Qt UDP通信demo

    Qt中通过QUdpSocket类实现UDP协议的编程。通过一个实例,介绍如何实现基于UDP协议的广播应用,它由UDP服务器和UDP客户端两部分组成。 UDP方式下客户端并不与服务器建立连接,它只负责调用发送函数向服务器发送数据报...

    UDP通信demo(C#)

    包含了原始工程文件(VS2010编译),内附写好的独立UDP通信类和实现通信的窗体应用程序。UDP拿去直接使用即可。为了方便童靴们的调试,和验证该程序的正确性,压缩包内同时附上网口调试程序(第三方)。拿去用吧,有...

    UDP通信Demo.zip

    这个UDP通信Demo将帮助你理解如何在C#中实现基本的UDP通信功能,你可以通过它学习到如何设置服务器端和客户端,以及如何在它们之间交换数据。对于网络编程初学者来说,这是一个很好的实践项目,能帮助你更好地理解...

    C++实现UDP通信代码

    本示例将详细介绍如何使用C++来实现UDP通信。 首先,我们要理解UDP的基础概念。UDP不提供像TCP那样的连接建立和维护,它不保证数据包的顺序到达,也不处理重传,因此,UDP通信通常比TCP更快,但可靠性较低。在C++中...

    ipv6的tcp与udp通信的demo

    本文将深入探讨IPv6环境下的TCP和UDP通信,并基于提供的文件名(tcp_server.c、tcp_client.c、udp_server.c、udp_client.c)进行详细讲解。 TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的传输层协议,...

    udp传输的demo

    总的来说,这个UDP传输DEMO展示了如何在Android平台上实现基本的UDP通信,并结合了滑动退出和本地数据库管理,为开发者提供了实用的学习示例。通过分析和理解这个DEMO,可以加深对UDP协议以及Android应用开发的理解...

    tuio的unity实现 UDP For Unity Demo

    标题中的“tuio的unity实现 UDP For Unity Demo”是指在Unity引擎中实现TUIO(Tabletop User Interface Objects)协议的UDP通信示例。TUIO是一种通用的、基于UDP的传输协议,常用于多点触摸设备和虚拟现实交互。...

    udp组播demo,简单演示

    描述中的“对udp通信里面的ip和端口号做文章”,指的是UDP通信的基本要素。每个UDP数据包都有源IP地址和源端口号以及目标IP地址和目标端口号。在组播中,目标IP地址会被设置为一个组播地址,这个地址代表了一个组的...

    UDP打洞demo

    但是UDP打洞巧妙地利用了NAT的工作原理,使得内网中的设备可以相互找到对方,从而实现P2P(点对点)通信。 在C#中实现UDP打洞,你需要理解以下几个关键概念和步骤: 1. **NAT工作原理**:NAT允许内部网络中的多个...

Global site tag (gtag.js) - Google Analytics