专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
LabView
LabView UDP如何设置Socket接收缓冲区?
2019-07-17 15:23
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
LabVIEW
11526
12
909
请问下,
labview
的UDP函数如何加大系统缓冲区?
类似于C#中的Socket.ReceiveBufferSize,活着C++setsockopt功能,
目前发现丢包是由于发送过快,缓冲太小,想增加缓冲区,或者谁有更好的方法?拜谢各位大大。
分全都给出去了
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
咆哮森林
2019-07-18 16:31
UDP的系统缓存队列与TCP的相比,有两点显著的不同:
1、UDP没有SendQ。UDP的数据包不会被处理,通过调用sendto()(或者在connect()之后也可以调用send())将数据直接发送。
2、 UDP的数据在缓存队列中是有边缘保证的,也就是说,数据包是有大小的。每次调用recvfrom()(或者在connect()之后调用recv())都会试图接收一个完整的数据包——因此,UDP程序所指定的接收缓存大小应该足够存放每一个UDP数据包,否则,多余的部分就会被抛弃,并且 recvfrom()(或recv())返回一个异常(-1,并且抛出异常代码)。
(在上图中,我们用虚线的数据包边缘表示TCP中的无边缘保证;而UDP中字节之间用虚线隔开表示UDP的数据不会以字节为单位进行传输)
此外,UDP的RecvQ还可能存在于TCP的第三个不同:我们说,UCP是无连接的,当然,我们也可以调用connect()将UDP连接起来,但是在默认无连接的情况下,UDP的RecvQ中可以缓存来自所有远程地址的数据包——这不仅仅在很多时候很不方便,如果我们只希望接收一个特定地址的数据,比如作为客户端只希望接收来自服务器的数据;而且,因为这个缓存可以被任何信息进入,从而也是一个安全隐患,很可能这个缓存在短时间内就会被垃圾信息所填满。
加载中...
查看其它12个回答
一周热门
更多
>
相关问题
怎么利用公式波形产生所想要的波形
2 个回答
USBCAN-2A与PCI5121D的数据通信
1 个回答
labview调用c时遇到问题
1 个回答
大家帮小弟解决下问题,不胜感激
4 个回答
关于labview插值
1 个回答
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
LabView
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
1、UDP没有SendQ。UDP的数据包不会被处理,通过调用sendto()(或者在connect()之后也可以调用send())将数据直接发送。
2、 UDP的数据在缓存队列中是有边缘保证的,也就是说,数据包是有大小的。每次调用recvfrom()(或者在connect()之后调用recv())都会试图接收一个完整的数据包——因此,UDP程序所指定的接收缓存大小应该足够存放每一个UDP数据包,否则,多余的部分就会被抛弃,并且 recvfrom()(或recv())返回一个异常(-1,并且抛出异常代码)。
(在上图中,我们用虚线的数据包边缘表示TCP中的无边缘保证;而UDP中字节之间用虚线隔开表示UDP的数据不会以字节为单位进行传输)
此外,UDP的RecvQ还可能存在于TCP的第三个不同:我们说,UCP是无连接的,当然,我们也可以调用connect()将UDP连接起来,但是在默认无连接的情况下,UDP的RecvQ中可以缓存来自所有远程地址的数据包——这不仅仅在很多时候很不方便,如果我们只希望接收一个特定地址的数据,比如作为客户端只希望接收来自服务器的数据;而且,因为这个缓存可以被任何信息进入,从而也是一个安全隐患,很可能这个缓存在短时间内就会被垃圾信息所填满。
一周热门 更多>