免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 10007 | 回复: 25
打印 上一主题 下一主题

[C++] 数据溢出问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-28 11:05 |只看该作者 |倒序浏览
程序提供一个接口。接口用来传入字符串数据。我想请问下。在接口突然有大量数据堆积的情况下(还没来得及接受数据),会不会有数据丢失的现象或缓存溢出出现呢?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2008-07-28 12:22 |只看该作者
你应该不能简单地叫做接口了吧,
应该是一个缓冲区。
如果缓冲区太小,数据量大的话,
有可能会溢出,看你的处理策略了。

论坛徽章:
0
3 [报告]
发表于 2008-07-28 12:28 |只看该作者
LZ 说的太含糊了.

论坛徽章:
0
4 [报告]
发表于 2008-07-28 13:02 |只看该作者
可能是我没描述清楚吧。。不过确实自己对这方面的概念很模糊。

我想问下、数据要传进来肯定会通知接口有新的数据了。这时候程序通过接口把数据保存到建好的缓存中。。但外部数据要说是缓冲区的话。。那数据在没进入程序所建立的缓冲前。是怎么存储的呢?这些数据应该在程序外吧?能控制吗?

论坛徽章:
0
5 [报告]
发表于 2008-07-28 13:07 |只看该作者

回复 #4 jianmuyan 的帖子

外部的数据是以TCP协议,还是串口,或其他形式送到本机?
一般产生数据的仪器或设备自己都会有一些缓冲区,但都不会太大. 因此对于实时采集数据要尽快取走.

如果不是实时采集那另当别论.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2008-07-28 13:08 |只看该作者
我给你举个网络的例子,
A给B通过socket发送数据,
B端收到后会把数据放入缓冲区。
首先B端的TCP/IP协议族有一个缓冲区,
这个缓冲区在内核中,它会缓存一部分数据。
然后再把接收到的数据传给应用程序。
应用程序再把它放入自己的缓冲区中。
这两个缓冲区都会溢出。

论坛徽章:
0
7 [报告]
发表于 2008-07-28 13:10 |只看该作者
TCP/IP协议族有一个缓冲区有长度的

论坛徽章:
0
8 [报告]
发表于 2008-07-28 13:14 |只看该作者

回复 #5 system888net 的帖子

是实时采集。。不过有可能发生这种情况。。突然有大批量的数据传过来的话。比方说数据量肯定超过了缓冲区的大小。。这种情况是不是就该定制个策略来选择那些要哪些不要呢。不过没接收到的数据是不受控制的吧?肯定会产生数据丢失是吗?只能控制接收到的数据去选择抛弃或保留。。

论坛徽章:
0
9 [报告]
发表于 2008-07-28 13:18 |只看该作者
原帖由 lenovo 于 2008-7-28 13:08 发表
我给你举个网络的例子,
A给B通过socket发送数据,
B端收到后会把数据放入缓冲区。
首先B端的TCP/IP协议族有一个缓冲区,
这个缓冲区在内核中,它会缓存一部分数据。
然后再把接收到的数据传给应用程序。
...

向您举的例子的这种情况下。。。您说的内核中的缓冲区是不是程序无法控制呢?如果超过了其大小。是否部分数据肯定会丢失?如果这个内核缓冲区满了。。是否新的数据就肯定进不来?还是老数据会丢失?

论坛徽章:
0
10 [报告]
发表于 2008-07-28 13:25 |只看该作者
原帖由 jianmuyan 于 2008-7-28 13:14 发表
是实时采集。。不过有可能发生这种情况。。突然有大批量的数据传过来的话。比方说数据量肯定超过了缓冲区的大小。。这种情况是不是就该定制个策略来选择那些要哪些不要呢。不过没接收到的数据是不受控制的吧?肯 ...


在你说的这种情况下,若要不丢失数据,建议:
1. 尽量实时取走数据.
2.计算出足够的接收缓冲区.

至于"实时产生的数据量肯定超过了缓冲区的大小",就会丢数据,这是必然.

至于那些数据可以丢弃,要取决于你的具体的业务情况和要求了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP