社区
网络编程
帖子详情
关于用UDP协议 每次发送很大的数据包的问题
AntonlioX
2005-05-20 09:40:58
我现在在做视频传输。我想问每次发送的包很大 比如有100k(一次发送一视频帧)的大小。是不是可以这样做的? 因为我猜测网络协议的底层会自动进行分包, 在接收端再重新组包,我的说法是否正确啊。
此外,我还有一个问题: 在用udp发送比如视频的数据的时候 是一次发送很大的包好,还是分多次,小包发送啊?
...全文
652
11
打赏
收藏
关于用UDP协议 每次发送很大的数据包的问题
我现在在做视频传输。我想问每次发送的包很大 比如有100k(一次发送一视频帧)的大小。是不是可以这样做的? 因为我猜测网络协议的底层会自动进行分包, 在接收端再重新组包,我的说法是否正确啊。 此外,我还有一个问题: 在用udp发送比如视频的数据的时候 是一次发送很大的包好,还是分多次,小包发送啊?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
压缩加分块
02 网络编程-
UDP
用户
数据包
协议
无连接:通信双方不需要事先连接无确认:收到数据不给对方发回执确认不保证有序、丢失不重发采用帧同步的数据报通信方式(即通信双方
每次
的收发数据量相等)
UDP
类似于寄信,
UDP
的特点是无需连接、无需确认、无需缓冲...
UDP
数据包
最大长度与收发包
关于
UDP
面向报文的传输方式决定了
UDP
的数据
发送
方式是一份一份的,也就是应用层交给
UDP
多长的报文,
UDP
就照样
发送
,即一次
发送
一个报文。那么
UDP
的报文大小由哪些影响因素呢?
UDP
数据包
的理论长度是多少,合适的
UDP
...
网络
协议
之
UDP
数据包
TCP是面向流连接,数据的“粘包”
问题
:客户端
发送
的多个
数据包
使用了优化算法(Nagle算法),将多次间隔较小、数据量小的
数据包
,合并成一个大的
数据包
发送
(把
发送
端的缓冲区填满一次性
发送
);接收端底层会把TCP
TCP和
UDP
协议
发送
数据包
的大小
在进行
UDP
编程的时候,我们最容易想到的
问题
就是,一次
发送
多少bytes好? 当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,这里仅对像ICQ一类的
发送
聊天消息的情况作分析,对于其他情况,...
VC++实现
UDP
数据包
发送
UDP
协议
的全称是用户
数据包
协议
,在网络中它与TCP
协议
一样用于处理
UDP
数据包
,是一种无连接的
协议
。在OSI模型中,在第四层——传输层,处于IP
协议
的上一层。
UDP
有不提供
数据包
分组、组装和不能对
数据包
进行排序的...
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章