嵌入式开发者社区

标题: C6748平台下NDK开发使用UDP协议的问题 [打印本页]

作者: li19900308    时间: 2017-7-17 14:24
标题: C6748平台下NDK开发使用UDP协议的问题
我们目前在做UDP协议传输数据的测试,使用sendto()这个socket函数,程序大体上没有问题。
但是在长时间大数据量测试的时候(比方说超过10GB总数据量),发现sendto这个函数会返回一个编号为55的错误。然后程序从此就再也发不出去数了。
serrno.h中,这个错误的描述为,no buffer space available
在NDK User Reference中的描述为,Memory allocation failure while attempting to send data


目前我查到的解决方案有两个:


1.扩大发送缓存。在.cfg文件中调整(NDK-->global-->buffers-->BM)。我将默认的buffer扩大成原来的五倍,目前测试了一次,连续发送了25GB没有报错,貌似是解决了。但是心里还是有个疑问,会不会在发送更多数据的时候出问题,比方说200GB。


2.报错之后,让程序暂停再运行。就是在出现错误后,使用Task_Sleep这个函数延迟一段时间。目前这个方法还没有测试,因为我们希望采集到的数据尽量不要丢失,如果暂停若干时间后,这段时间采集的数据必然会丢。


现在想问的是,这个问题有没有什么更好的解决方法。谢谢各位大大!



作者: human    时间: 2017-7-23 20:58
先sleep再send,减少掉包




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4