社区
网络编程
帖子详情
UDP接收数据的完整性判断
ztest8
2010-05-21 02:53:16
采用UDP接收大块数据:
我先在发送端将数据拆分为带序号的1KB大小的若干小单元,然后在while中分次发送出去,每次发送10次(共10K)。
在接收端可能无法完整接受到10K中的全部数据包,我的问题是,怎么判断接收全部完成,何时设置超时(因为不同客户端网速差别可能很大)?
...全文
398
10
打赏
收藏
UDP接收数据的完整性判断
采用UDP接收大块数据: 我先在发送端将数据拆分为带序号的1KB大小的若干小单元,然后在while中分次发送出去,每次发送10次(共10K)。 在接收端可能无法完整接受到10K中的全部数据包,我的问题是,怎么判断接收全部完成,何时设置超时(因为不同客户端网速差别可能很大)?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
许文君
2010-05-24
打赏
举报
回复
mark下,这个问题从未深思过
zoumingmozhe
2010-05-24
打赏
举报
回复
可以参考TCP协议的原理来进行。呵呵
Eleven
2010-05-24
打赏
举报
回复
ls的都已经说了,这个需要自己定义协议,定义包头,加个序列号,如果对方未收到,就需要重发该包,和TCP的比较类似。。。
lingxiao66
2010-05-23
打赏
举报
回复
10k 大小应该不需要分包才对
udp一般支持最大64k数据
如果要分包的话 把每包标上序号 做一个acker 收到一包再发下一包 一直到收完
但是个人觉得大的包应该用tcp传输
sanguomi
2010-05-23
打赏
举报
回复
我以前做过,一 种按顺序插,每次读取指定长度的字节,然后发送,然后等待服务端确认,主要确认接受的大小,返回包,如果返回成功,继续下一个,如果没返回,继续发上次包, 最后一次发送文件尾
还有种就是带序号,开很多线程一起发,服务端创建同样大小的空数据,根据收到的包数据和序号,对应序号插进去,最后接收完,数据也是完整的
周药师
2010-05-23
打赏
举报
回复
自己定义好协议
UDX协议
2010-05-23
打赏
举报
回复
每个包一个序号,接收端,可根据序号来判断
ztest8
2010-05-21
打赏
举报
回复
判断完整性主要是为了传文件
ztest8
2010-05-21
打赏
举报
回复
谢谢你的回复,由于我在做一个视频聊天模块,里面用到了打洞,所以是UDP的,不过你说的“重发->丢失->再重发->再丢失->再再...”确实可能出现,谢谢提醒!
yanran_hill
2010-05-21
打赏
举报
回复
分组与打包,每个包都有包编号,针对某个包丢失的场合,要通知对方重发,还有注意避免由于重发->丢失->再重发->再丢失->再再...丢失而引起数据阻塞的问题
一般而言,TCP在这方面做得很好,我们可以直接使用TCP而不必关心这些问题了不得,建议你去参考TCP的相关内容
计算机网络 传输层 TCP和
UDP
协议
Re: 计算机网络 传输层 TCP和
UDP
协议# 传输层协议 TCP 和
UDP
的应用场景 要发送的内容多,需要将发送的内容分成多个数据包发送(TCP) 要发送的内容少,一个数据包就能发送全部内容(
UDP
)# 传输层协议和应用层协议之间的关系 传输层协议加一个端口号来标识一个应用层协议, 展示了传输层协议和应用层协议之间的关系# 使用TCP/IP筛选实现网络安全 防火墙设置与端口#
UDP
协议特点和报文格式
UDP
是无连接的:即发送数据之前不需要建立连接
UDP
使用尽最大努力交付:即不保证可靠交付,因此主机不需要维持复杂的连接状态表# TCP 协议特点和报文格式先连接后释放;点对点;可靠传输;全双工通信;面向数据流七项标记位停止等待协议与改进的停止等待协议滑动窗口技术详解:确认Seq与选择确认SACK 超时重传时间:查询计算与自动调整 流量控制功能:点对点的流量控制 拥塞控制:相对整体网络环境而言;慢开始算法和拥塞避免算法 改进的拥塞控制:快重传和快恢复 三次握手建立TCP连接,四次挥手释放连接。# TCP 协议面临的攻击 SYN 攻击:捏造的源地址; LAND攻击:自己就是源地址# 通过抓包工具,查看以上报文格式# 习题详解
Java 网络编程
UDP
协议之发送数据和
接收数据
的详解
UDP
协议: 用户数据报协议(User Datagram Protocol)
UDP
是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一个台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。由于使用
UDP
协议消耗资源少,通信效率高,所以通常都会用于音频,视频和普通数据的传输。 例如视频会议通常会采用
UDP
协议,因为这种情况偶尔丢一两个数据包,也不会对接收结果产生太大影响,但是在使用
UDP
111-
UDP
数据报被截断
1. 数据报被截断有时候我们有这样的需求,在
udp
数据报传输的过程中,如果对方发过来的数据报很大,而我们的接收缓冲区不足以容纳这么大的数据报,怎么办?此时
udp
数据报就会被截断,有没有一种办法能
判断
数据报是否被截断呢?先来看看
UDP
数据报被截断的行为,可能有下面三种: 丢弃超出部分,并向上层返回 MSG_TRUNC 标志。需要使用 recvmsg 来接收这个标志。 直接丢弃,不通知 保留
Q
Udp
Socket实现
UDP
通信
UDP
(User Datagram Protocol, 用户数据报协议) 是轻量的、不可靠的、面向数据报、无连接的协议,它可以用于对可靠性要求不高的场所。
UDP
发送和
接收数据
都不需要建立连接,只需要绑定IP地址和端口号就可以了。发送数据直接发送,
接收数据
需要循环
判断
数据是否接受完毕。Qt的信号槽机制很好的实现了收到数据发送信号触发处理函数。 Q
Udp
Socket类用于
UDP
通信,它是从QAbstr...
UDP
.01.基础知识+基础模型
文章目录
UDP
协议头基础信息数据报特点与TCP的对比小结
UDP
基础模型服务器端1、包含网络头文件网络库2、打开网络库3、校验版本4、创建SOCKET5、绑定地址与端口6、与客户端收发消息收发客户端 https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-socket 本节内容其实属于计算机网络基础方面的知识,大多数在网上以及书本上都有讲这里再次罗列一下,权当记录。
UDP
协议头 基础信息
UDP
源端口号(2字节)
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章