`

问题一例:UDP协议下发送多个数据报按大小体积收只收到一份

阅读更多
准备摆弄个文件传输,在收集资料时,遇到这样一个问题。
描述大概如下:在UDP协议下,客户端向服务端发送2个以上数据包,结果服务端想通过大小不同来读取,但是都只收到一份。

《TCP/IP》三卷第一卷有这么一个例子:
关于UDP队列描述:
    通常程序所使用的每个UDP端口都与一个有限大小的输入队列相联系。这意味着,来自不同客户的差不多同时到达的请求将由UDP自动排队。接收到的UDP数据报以其接收顺序交给应用程序(在应用程序要求交送下一个数据报时)

并且做了这么个例子:
    作者分别从两个地址向服务器各发送了3条数据,但是服务器只接收了两个地址的第一个数据报。而且也没发回ICMP的数据报。
    可归出的要点有,应用程序并不知道其输入队列何时溢出。只是有UDP对超出数据报进行丢弃,在在传输层上完成。可以认为是FIFO的


每个UDP端口都与一个有限大小的输入队列相联系
我这里认为这个就是我们接收数据设置的缓冲区大小。

这段解释从根本上来解释,即不依据什么理论,它规则就是这么定了。

///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////

《WINDOWS网络编程》关于对此的理论描述:

第5.1.1一节指出,从消息来观察时,如果传送协议把它们当做一条独立的消息在网上传送,我们就说该协议是面向协议的。同时还意味着,接收端在接收数据时,返回的是发送端写入的一条离散消息,不能收到更多消息。
例子如下:左边工作站向右边工作站提交三条分别是128,64,32字节消息。作为接收端,缓冲区为256个字节,但是在读取时不会把三个数据合起来返回,而是128,64,32字节。这称为消息保护边界。 这就是常说的基于数据报的协议。如果想一口气返回即无保护消息边界的流协议,


从这两点就可以给我们答案了。
2
0
分享到:
评论

相关推荐

    UDP用户数据报协议UDP用户数据报协议

    UDP 协议适用端口分辨运行在同一台设备上的多个应用程序。 UDP 协议的主要特点是: 1. 无连接:UDP 协议不需要在数据传输前建立连接。 2. 不可靠:UDP 协议不提供对 IP 协议的可靠机制、流控制以及错误恢复功能等...

    UDP协议发送接收数据

    UDP(User Datagram Protocol)协议是Internet协议族中的一个无连接、不可靠的传输协议,它在TCP/IP协议栈中位于应用层和传输层之间。UDP提供了简单高效的数据报服务,适用于那些对实时性要求较高而对数据完整性要求...

    C# UDP多线程发送接收

    在编程领域,尤其是在网络通信中,UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的传输协议,常用于实时音频、视频流等对数据完整性要求不高的场景。C#作为.NET框架的主要编程语言,提供了...

    Delphi UDPServer 发送接收16进制数据

    在本文中,我们将深入探讨如何使用Delphi构建一个UDPServer来发送和接收16进制数据。Delphi是一款强大的Windows应用程序开发工具,它提供了丰富的组件库和编程接口,使得网络编程变得相对简单,尤其是UDP(用户数据...

    UDP协议用户数据报协议demo

    UDP(User Datagram Protocol)协议是Internet协议族中的一个无连接的传输层协议,它提供了端到端的数据传输服务。在TCP/IP模型中,位于网络层的IP协议之上,应用层之下。UDP协议不提供诸如确认、流量控制或拥塞控制...

    c#通过UDP协议接收发送信息

    在IT行业中,网络通信是软件开发中的重要组成部分,而UDP(User Datagram Protocol)协议作为传输层的一种无连接协议,常用于需要快速响应但对数据完整性要求不高的应用场景。本示例将聚焦于如何使用C#语言实现基于...

    TCP和UDP协议发送数据大小

    TCP和UDP协议发送数据包的大小是一个重要的讨论话题,特别是在UDP编程中。为了确保数据的正确发送和接收,需要了解TCP/IP协议栈的每一层的限制。 首先,从链路层开始,以太网(Ethernet)数据帧的长度必须在46-1500...

    信息安全技术:UDP协议.pptx

    UDP(User Datagram Protocol,用户数据报协议)是互联网协议栈中的传输层协议,主要用于在应用层提供一种简单而快速的数据传输方式。它不像TCP(传输控制协议)那样提供可靠的连接服务,而是以无连接的方式工作,这...

    基于UDP协议的多线程高速接收QT工程

    【标题】"基于UDP协议的多线程高速接收QT工程"揭示了这个项目的核心技术是使用UDP协议进行高速数据接收,并结合多线程技术来处理海量数据,且它是在QT框架下实现的。QT是一个流行的跨平台应用程序开发框架,特别适合...

    windows下UDP组播(多播)发送和接收程序

    8. **程序结构**:一个简单的UDP组播程序通常包括初始化套接字、设置组播成员资格、循环发送/接收数据、处理接收到的数据以及最后关闭套接字和清理资源等步骤。 9. **UDPMulticast_Windows文件**:这个压缩包中的...

    C#使用UDP协议socket编程收发数据

    在本文中,我们将深入探讨如何在C#中使用UDP(用户数据报协议)进行socket编程,以便收发数据。UDP是一种无连接的、不可靠的传输层协议,它提供了较低的延迟和较高的吞吐量,适合实时数据传输或对顺序传输要求不高的...

    用户数据报协议(UDP)

    用户数据报协议(UDP)是一种无连接的传输层协议,负责进程到进程的通信。UDP 协议报文格式由报头和数据两部分组成。报头包括源端口号、目的端口号、长度、校验和等字段。UDP 协议的优点是传输速度快、效率高、灵活...

    UDP.rar_UDP 协议_UDP服务器

    UDP(User Datagram Protocol)是互联网协议族中的一个基础协议,主要负责在计算机网络中提供无连接的数据报服务。与TCP(Transmission Control Protocol)相比,UDP更注重速度和效率,但牺牲了可靠性和有序性,因此...

    Qt用于UDP通信对方停止发送,接收方仍有空报文出现问题

    UDP(User Datagram Protocol)是一个无连接、不可靠的传输层协议,它不保证数据的顺序、完整性和可靠性,也不进行重传。因此,即使发送方停止发送,接收方可能还会接收到之前在网络中滞留的数据报。 在问题描述中...

    利用UDP协议发送与接收文件

    在VC++环境中,利用UDP(用户数据报协议)来实现文件的发送与接收是一个常见的网络编程任务。UDP是一种无连接的、不可靠的传输层协议,适用于对实时性要求较高的应用,例如视频会议、在线游戏等。下面我们将详细讨论...

    UDP十六进制数据传输

    3. **发送UDP数据**:使用socket编程接口,可以创建一个UDP套接字,并通过`sendto()`函数将十六进制转换后的数据发送到指定的IP地址和端口。注意,由于UDP的无连接特性,无需进行连接建立和关闭。 4. **接收UDP数据...

    matlab使用UDP协议发送和接收报文程序源码.zip

    资源名:matlab使用UDP协议发送和接收报文程序源码.zip 资源类型:程序源代码 源码说明: 基于matlab的使用UDP协议发送和接收报文程序源码,有发送和接收端两套程序,包含完整代码和注释,非常适合借鉴学习 适合人群...

    UDP.rar_C++多播_udp 组广播_udp协议

    信息简介:UDP协议,即拥护数据报协议(Use Datagram ...广播数据即从一个工作站发出,局域网内的其他所有工作站都能收到它.IP协议下,多播是广播的一种变形,IP多播要求将对收发数据感兴趣的所有主机加入到一个特定的组.

Global site tag (gtag.js) - Google Analytics