找回密码
 注册
搜索
查看: 1119|回复: 5

[讨论] 请教:mtk系统里的网络传输数据问题????

[复制链接]
发表于 2012-2-8 15:25:19 | 显示全部楼层 |阅读模式
请高手们帮解释下,关于mtk系统里的网络编程这块,通过GPRS网络传输数据时,每次发送的数据包最多可以为多少K呢?这个数据大小是受什么限制的??如果要传送一个100多k的文件,请问用什么方法传输成功率高些呢?!
发表于 2012-2-9 17:34:00 | 显示全部楼层
你可以通过send循环去推送,然后到一定数据量之后暂停发送,等待服务器接收完成后的指令,然后继续发送
点评回复

使用道具 举报

 楼主| 发表于 2012-2-9 10:02:23 | 显示全部楼层
我之前在mtk25平台上做的时候是每次soc_send只能最大传送1K的数据,不知道有没有可能加大呢?!欢迎大家来讨论哈[em14]
点评回复

使用道具 举报

 楼主| 发表于 2012-2-10 17:49:47 | 显示全部楼层
以下是引用ysfeagle在2012-2-10 16:53:13的发言:
延时是不科学的,是有时候会发送成功的,但是它是有隐患的。由于send函数他是只管push数据的,他push的数据会保存在一个buffer里面,L4C的发送的数据是从这个buffer里面取得的,而这个buffer大小是有限的(PC上的是4M的样子,MTK上是多少没有仔细关注过),如果你持续的发送,会导致这个buffer爆满。send的ret值就变成了broken pip,个人觉得比较合理的是,你可以跟服务器去协商,比如我先发送3K数据过去,然后就去监听recv的结果,如果服务器完整接收完这3K的数据,可以给手机端,反馈一个continue的指令,手机端收到指令后就继续发送3K,再recv知道发送完成为止,这个每次发送的数据量可以实际测试下,选用一个合理的值!
以上是个人的浅见,

谢谢您的回答,我觉得你说得很有道理,我会试试看。
点评回复

使用道具 举报

发表于 2012-2-10 16:53:13 | 显示全部楼层
延时是不科学的,是有时候会发送成功的,但是它是有隐患的。由于send函数他是只管push数据的,他push的数据会保存在一个buffer里面,L4C的发送的数据是从这个buffer里面取得的,而这个buffer大小是有限的(PC上的是4M的样子,MTK上是多少没有仔细关注过),如果你持续的发送,会导致这个buffer爆满。send的ret值就变成了broken pip,个人觉得比较合理的是,你可以跟服务器去协商,比如我先发送3K数据过去,然后就去监听recv的结果,如果服务器完整接收完这3K的数据,可以给手机端,反馈一个continue的指令,手机端收到指令后就继续发送3K,再recv知道发送完成为止,这个每次发送的数据量可以实际测试下,选用一个合理的值!
以上是个人的浅见,
点评回复

使用道具 举报

 楼主| 发表于 2012-2-10 09:50:15 | 显示全部楼层
谢谢楼上的回答,我试过如果连续发送数据包后,大概发到第10个包网络就会出问题发不出去了,send返回的错误是broken pip。由于是将一个文件(大概10k-20k)分成十几二十个包,而且这些数据包必需连续发出去才行,是不是每发送一个包都要设一个延时???
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-12-25 01:04 , Processed in 0.043771 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表