社区
网络编程
帖子详情
关于用UDP协议 每次发送很大的数据包的问题
AntonlioX
2005-05-20 09:40:58
我现在在做视频传输。我想问每次发送的包很大 比如有100k(一次发送一视频帧)的大小。是不是可以这样做的? 因为我猜测网络协议的底层会自动进行分包, 在接收端再重新组包,我的说法是否正确啊。
此外,我还有一个问题: 在用udp发送比如视频的数据的时候 是一次发送很大的包好,还是分多次,小包发送啊?
...全文
713
11
打赏
收藏
关于用UDP协议 每次发送很大的数据包的问题
我现在在做视频传输。我想问每次发送的包很大 比如有100k(一次发送一视频帧)的大小。是不是可以这样做的? 因为我猜测网络协议的底层会自动进行分包, 在接收端再重新组包,我的说法是否正确啊。 此外,我还有一个问题: 在用udp发送比如视频的数据的时候 是一次发送很大的包好,还是分多次,小包发送啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nuaa3
2005-05-21
打赏
举报
回复
我把代码发给你了
xiao_xiao_zi
2005-05-20
打赏
举报
回复
分成小包比较好
这样丢包的话代价也比较小
AntonlioX
2005-05-20
打赏
举报
回复
我刚查的一点资料 ,提到了分片的问题
===================
3、 IP分片
任何IP层接收到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据,并查询该接口的MTU。IP把MTU与数据报的长度进行比较,如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发送在中间路由器上。IP数据报分片后,只有到达目的主机后才进行重装。
IP首部与分片有关的字段:
(1)对于每份IP数据报来说,都有一个标识字段,该值在分片时被复制到每个片中。
(2)标志字段用其中一个bit表示“更多的片”,除最后一片外,其他每个分片都要设置为1。
(3)片偏移字段指的是该片偏移原始数据报开始处的位置。
(4)数据报被分片后,每个片的总长度要改为该片的长度值。
(5)标志字段中有一个bit表示“不分片”,如果该位1,IP将不对数据报进行分片。
IP报即使丢失一片数据报也要重传整个数据报。为什么呢?因为IP层没有超时重传的机制,必须由更高层负责超时重传。
AntonlioX
2005-05-20
打赏
举报
回复
但是udp 效率高啊。 视频通讯中基本都是用的udp
hdqlj
2005-05-20
打赏
举报
回复
为什么不用tcp呢
AntonlioX
2005-05-20
打赏
举报
回复
但是我看了 vckbase的一个例子 VideoNet
它里面就是 发送很大的包来传输视频的:
//Compress the data...to h263
......
CompressFrame(&cparams, &bits);
// Transmit the compressed frame
.......
dvideo.SendVideoData(cdata,count); //dvideo 是个CSocket类的派生类的对象,用来发送vidoe
===========
其中cdata 是里面定义的全局变量
unsigned char cdata[10000];
在接收的部分
全局变量 static unsigned char data[2000],vdata[30000],adata[5000];
在接收中
unsigned int DSocket::vlength=30000;
.........
ReceiveFrom(vdata,vlength,address,port);
.........
--------------------
它的代码中就是使用的发送的远远超过2k的数据大小 和你们上面说的有点矛盾啊?
yonk
2005-05-20
打赏
举报
回复
UDP每次发送的包不能超过最大包大小,否则你会收不完整。关于此点详细解释请见msdn。另外如果本地arp缓存中没有对方地址时,包比较大会产生多次arp交互。或许这也是需要注意的地方。
younggle
2005-05-20
打赏
举报
回复
视频传输,别忘记编码压缩啊。如果确实不能压缩,那建议你分多次小包发送,每个小包的长度不要超过2K(2048)个字节。
AntonlioX
2005-05-20
打赏
举报
回复
大家来讨论一下啊
zhjie374
2005-05-20
打赏
举报
回复
分开发吧....
nuaawenlin
2005-05-20
打赏
举报
回复
压缩加分块
UDP
协议
详解
UDP
是一种无连接、不可靠的传输
协议
,常用于实时通讯如游戏和音视频,因其高效性在某些场景优于TCP。Java中使用DatagramSocket进行
UDP
数据的
发送
和接收。尽管
UDP
存在数据丢失的风险,但在应用层可进行校验和控制以提高可靠性。
lwIP TCP/IP
协议
栈笔记之十四:
UDP
协议
本文详细介绍了
UDP
协议
,包括其无连接、不可靠的特点,以及常用端口号。探讨了
UDP
报文的结构,特别是首部数据结构和控制块。还涵盖了
UDP
报文的
发送
和接收流程,阐述了LwIP如何处理
UDP
通信。
基于
UDP
协议
的简单基本视频传输程序的编写
本文介绍了基于
UDP
协议
的简单视频传输程序的编写,强调了
UDP
协议
的无连接特性和高效传输速度,适合于视频流的实时传送。内容包括
UDP
协议
的特性、视频传输的特点、网络搭建以及VC程序设计,涉及数据分包、服务器接收缓存设置和图像数据处理等关键步骤。
TCP和
UDP
的
发送
缓冲区和接收缓冲区内存
问题
本文探讨了TCP全双工模式下
发送
缓冲区与接收缓冲区的原理,对比了TCP和
UDP
在
数据包
丢失与缓冲区管理上的区别。重点讲述了
UDP
数据包
分片重组丢失及缓冲区填满导致丢包的
问题
,并提供了解决
UDP
可读缓冲区不足的策略。
网络原理(六):
UDP
协议
本文介绍了
UDP
协议
的特点,包括面向数据报、不可靠传输、全双工、无连接。还阐述了其报文格式,由报头和载荷组成,重点讲解了报文长度和校验和。当
发送
数据超64kb时,可选择应用层拆包或用TCP
协议
解决。校验和用于验证数据是否修改,采用CRC方式计算。
网络编程
18,356
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章