首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捕获UDP流数据

捕获UDP流数据
EN

Stack Overflow用户
提问于 2014-10-13 18:00:38
回答 2查看 1.6K关注 0票数 2

我编写了一个简单的UDP服务,它侦听从vlc播放器发送的传入UDP数据包。问题是每次提取中的数据大小约为2KB;一个93 MB文件的最终输出大小约为14 KB。=)

我应该调用setsocketOpt来增加recv缓冲区的大小吗?

我想知道,切割数据的套接字有什么问题吗?(数据丢失)还是所提取的数据需要解压缩和进一步处理?

我正在使用C++ winSock库。一些输出数据如下:

代码语言:javascript
复制
G@GGG@DGG@DGGGGGG@DGGGGG@DGGGGGG@DGGGGGG@DGGGGGGGGGG@GG@DGGGGGG@DG@EG@E
G@EGGGGGGGGGGG@DG@G@DGGGG@EG@EG@EG@B9GGGGG@DGGGGG@DGGGGG@GGGGGGG@DG@D
GG@DGGGGGGGGGG@DGGG@E2|ØzþG@EGGGGGGGG@DG@DGGGGGGGGGGGGGG@DGGGGG@D
G@B2GGG@DG@DG@EG@GGGGGGGGGGGGGGGG@GGGGGGGG@EGGGG@DGGGGGGGG@DGGGG@E
GGGGGGGGGGG@DGGGGGGGGG@DGGGGGGGGGGGG@EGGGGGGGGGGGGGGGG
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-14 03:32:37

UDP是一种基于消息的协议,数据包具有一定的边界。不能接收部分数据包。也就是说,要么您将得到完整的消息,要么您将得不到它。

UDP适用于可以容忍丢包或无序分组传递但不能在延迟或抖动上妥协的应用程序。

TCP适用于可以接受延迟但不能在数据包丢失或数据包排序上妥协的应用程序。因此,如果希望通过网络传输分段数据包来重新组装整个93MB文件,使其不丢弃数据包,那么TCP/SCTP是一个更好的选择。

票数 0
EN

Stack Overflow用户

发布于 2014-10-13 19:49:48

UPD不是一个流协议。UDP读取将返回一个数据包。数据包可能丢失,重新排序,甚至重复。您的代码必须处理这个事实。

缓冲区大小与问题无关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26346084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档