V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Registering
V2EX  ›  程序员

关于网络重传策略,如何避免重复发送

  •  
  •   Registering · 2014-12-19 18:34:10 +08:00 · 2834 次点击
    这是一个创建于 3638 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在手机端发送图片,设置了10秒左右进行重传,重传最多3次,,,


    结果遇到以下问题

    网络环境不好的时候服务器会收到同样的照片3张,,,

    大概能理解其中的原因,,其实就是每次请求没挂掉,都在网络队列中,但是客户端一超时就会重传,导致队列中多了一副相同图片,,,,


    想问问,网络重传的策略问题,有什么比较好的解决方案,
    11 条回复    2014-12-20 15:59:12 +08:00
    llbbzh
        1
    llbbzh  
       2014-12-19 20:15:39 +08:00
    每次开始传图都需要获取一个随机token,每个token只能传一次图,客户端重传时不再获取token
    Registering
        2
    Registering  
    OP
       2014-12-19 20:24:34 +08:00
    @llbbzh 我用的是android官方的volley库,API貌似没得敢于重传过程,,该源码可能可以
    lujiajing1126
        3
    lujiajing1126  
       2014-12-19 20:36:49 +08:00
    服务器做个md5摘要之类的或者直接用第三方的云存储
    不知道你服务器端是什么语言
    volley是个大坑,谷歌都是些半成品。。我们用的async-http挺好用!
    Registering
        4
    Registering  
    OP
       2014-12-19 20:53:52 +08:00
    @lujiajing1126 哎 ,确实是一个半成品,说得好听就是开放,让你自己去实现,其实用起来很麻烦
    ,,,,,
    有点想花点时间把网络框架换掉,,,
    lujiajing1126
        5
    lujiajing1126  
       2014-12-19 20:57:34 +08:00
    @Registering 哈哈哈可以看一下我们公司在http-async上面封装的io-nothing-http

    链接: https://github.com/whosv/android-nothing-http
    llbbzh
        6
    llbbzh  
       2014-12-19 21:05:06 +08:00 via iPhone
    @Registering 没做过安卓开发,猜测可能是提供一个可以POST的地址吧?那就把token作为地址的参数,然后交给服务器判断
    PrideChung
        7
    PrideChung  
       2014-12-19 22:23:57 +08:00
    我不明白为什么你不等网络请求失败了之后再重传
    Registering
        8
    Registering  
    OP
       2014-12-19 22:25:05 +08:00
    @llbbzh token的原理是给每个请求一个单独的标志ID?
    est
        9
    est  
       2014-12-19 22:56:39 +08:00
    服务器支持断点续传即可。。。。。。。。。。。。。。
    llbbzh
        10
    llbbzh  
       2014-12-19 23:47:07 +08:00 via iPhone
    @Registering 是的。而且这个id不必保存,可以每天随时清理旧的。没写过什么东西只能回答到这
    Registering
        11
    Registering  
    OP
       2014-12-20 15:59:12 +08:00
    @PrideChung @est @llbbzh @lujiajing1126 volley确实坑,重传功能基本相当于没用的,,最后我把超时时间设置得尽量大,问题解决了,,,,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5788 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 02:44 · PVG 10:44 · LAX 18:44 · JFK 21:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.