准备摆弄个文件传输,在收集资料时,遇到这样一个问题。
描述大概如下:在UDP协议下,客户端向服务端发送2个以上数据包,结果服务端想通过大小不同来读取,但是都只收到一份。
《TCP/IP》三卷第一卷有这么一个例子:
关于UDP队列描述:
通常程序所使用的每个UDP端口都与一个有限大小的输入队列相联系。这意味着,来自不同客户的差不多同时到达的请求将由UDP自动排队。接收到的UDP数据报以其接收顺序交给应用程序(在应用程序要求交送下一个数据报时)
并且做了这么个例子:
作者分别从两个地址向服务器各发送了3条数据,但是服务器只接收了两个地址的第一个数据报。而且也没发回ICMP的数据报。
可归出的要点有,应用程序并不知道其输入队列何时溢出。只是有UDP对超出数据报进行丢弃,在在传输层上完成。可以认为是FIFO的
每个UDP端口都与一个有限大小的输入队列相联系
我这里认为这个就是我们接收数据设置的缓冲区大小。
这段解释从根本上来解释,即不依据什么理论,它规则就是这么定了。
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
《WINDOWS网络编程》关于对此的理论描述:
第5.1.1一节指出,从消息来观察时,如果传送协议把它们当做一条独立的消息在网上传送,我们就说该协议是面向协议的。同时还意味着,接收端在接收数据时,返回的是发送端写入的一条离散消息,不能收到更多消息。
例子如下:左边工作站向右边工作站提交三条分别是128,64,32字节消息。作为接收端,缓冲区为256个字节,但是在读取时不会把三个数据合起来返回,而是128,64,32字节。这称为消息保护边界。 这就是常说的基于数据报的协议。如果想一口气返回即无保护消息边界的流协议,
从这两点就可以给我们答案了。
分享到:
相关推荐
UDP 协议适用端口分辨运行在同一台设备上的多个应用程序。 UDP 协议的主要特点是: 1. 无连接:UDP 协议不需要在数据传输前建立连接。 2. 不可靠:UDP 协议不提供对 IP 协议的可靠机制、流控制以及错误恢复功能等...
UDP(User Datagram Protocol)协议是Internet协议族中的一个无连接、不可靠的传输协议,它在TCP/IP协议栈中位于应用层和传输层之间。UDP提供了简单高效的数据报服务,适用于那些对实时性要求较高而对数据完整性要求...
在编程领域,尤其是在网络通信中,UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的传输协议,常用于实时音频、视频流等对数据完整性要求不高的场景。C#作为.NET框架的主要编程语言,提供了...
在本文中,我们将深入探讨如何使用Delphi构建一个UDPServer来发送和接收16进制数据。Delphi是一款强大的Windows应用程序开发工具,它提供了丰富的组件库和编程接口,使得网络编程变得相对简单,尤其是UDP(用户数据...
UDP(User Datagram Protocol)协议是Internet协议族中的一个无连接的传输层协议,它提供了端到端的数据传输服务。在TCP/IP模型中,位于网络层的IP协议之上,应用层之下。UDP协议不提供诸如确认、流量控制或拥塞控制...
在IT行业中,网络通信是软件开发中的重要组成部分,而UDP(User Datagram Protocol)协议作为传输层的一种无连接协议,常用于需要快速响应但对数据完整性要求不高的应用场景。本示例将聚焦于如何使用C#语言实现基于...
TCP和UDP协议发送数据包的大小是一个重要的讨论话题,特别是在UDP编程中。为了确保数据的正确发送和接收,需要了解TCP/IP协议栈的每一层的限制。 首先,从链路层开始,以太网(Ethernet)数据帧的长度必须在46-1500...
UDP(User Datagram Protocol,用户数据报协议)是互联网协议栈中的传输层协议,主要用于在应用层提供一种简单而快速的数据传输方式。它不像TCP(传输控制协议)那样提供可靠的连接服务,而是以无连接的方式工作,这...
【标题】"基于UDP协议的多线程高速接收QT工程"揭示了这个项目的核心技术是使用UDP协议进行高速数据接收,并结合多线程技术来处理海量数据,且它是在QT框架下实现的。QT是一个流行的跨平台应用程序开发框架,特别适合...
8. **程序结构**:一个简单的UDP组播程序通常包括初始化套接字、设置组播成员资格、循环发送/接收数据、处理接收到的数据以及最后关闭套接字和清理资源等步骤。 9. **UDPMulticast_Windows文件**:这个压缩包中的...
在本文中,我们将深入探讨如何在C#中使用UDP(用户数据报协议)进行socket编程,以便收发数据。UDP是一种无连接的、不可靠的传输层协议,它提供了较低的延迟和较高的吞吐量,适合实时数据传输或对顺序传输要求不高的...
用户数据报协议(UDP)是一种无连接的传输层协议,负责进程到进程的通信。UDP 协议报文格式由报头和数据两部分组成。报头包括源端口号、目的端口号、长度、校验和等字段。UDP 协议的优点是传输速度快、效率高、灵活...
UDP(User Datagram Protocol)是互联网协议族中的一个基础协议,主要负责在计算机网络中提供无连接的数据报服务。与TCP(Transmission Control Protocol)相比,UDP更注重速度和效率,但牺牲了可靠性和有序性,因此...
UDP(User Datagram Protocol)是一个无连接、不可靠的传输层协议,它不保证数据的顺序、完整性和可靠性,也不进行重传。因此,即使发送方停止发送,接收方可能还会接收到之前在网络中滞留的数据报。 在问题描述中...
在VC++环境中,利用UDP(用户数据报协议)来实现文件的发送与接收是一个常见的网络编程任务。UDP是一种无连接的、不可靠的传输层协议,适用于对实时性要求较高的应用,例如视频会议、在线游戏等。下面我们将详细讨论...
3. **发送UDP数据**:使用socket编程接口,可以创建一个UDP套接字,并通过`sendto()`函数将十六进制转换后的数据发送到指定的IP地址和端口。注意,由于UDP的无连接特性,无需进行连接建立和关闭。 4. **接收UDP数据...
资源名:matlab使用UDP协议发送和接收报文程序源码.zip 资源类型:程序源代码 源码说明: 基于matlab的使用UDP协议发送和接收报文程序源码,有发送和接收端两套程序,包含完整代码和注释,非常适合借鉴学习 适合人群...
信息简介:UDP协议,即拥护数据报协议(Use Datagram ...广播数据即从一个工作站发出,局域网内的其他所有工作站都能收到它.IP协议下,多播是广播的一种变形,IP多播要求将对收发数据感兴趣的所有主机加入到一个特定的组.