在 Android 中通过异步套接字连接进行大量数据传输时出现问题



我有一个Android应用程序,它通过异步套接字连接与服务器通信,以传输一些大的信息包(最多11 Megs)。为了适应这种交互,我在数据发送和接收的关键点设置了小睡眠。在 WiFi 上,连接工作正常。对信息的大小做一个读取或写入似乎还不够,但我创建了函数来继续读取套接字,直到传输完成。

正如我所说,所有这些都适用于WiFi。但是,在3G或边缘网络上,传输失败,中途中断,并且通常会出错。我已经进行了多次检查和睡眠,以确保信息有机会通过,但它没有。

不幸的是,很难

更清楚地了解问题的根源。我已经工作了几天,试图尽可能优雅地解决这个问题,但无济于事。

TLDNR WiFi能够发送数据,但移动网络出现故障。我需要知道为什么以及如何修复它。

谢谢。

实际问题是每read()收到的金额比我预期的要小得多。我的程序要求在程序知道如何使用它之前通过XML发送整个架构。它没有收到足够的绳子,所以会死。现在它检查/schema 标记是否在字符串中(通过 if ( !response.contains("/schema") )),并且在找到该标记或超时之前不会停止读取。

您可能想要一个允许恢复中断数据传输的解决方案。 查看如何恢复中断的下载 - 第 2 部分和 https://stackoverflow.com/search?q=[android]+resume+download 示例。

另外,我强烈建议观看 Virgil Dobjanschi 关于 Android REST 客户端应用程序的 Google I/O 2010 演示,其中他描述了设计一个用于处理此类数据和网络通信的应用程序。他是Android官方Twitter应用程序的作者。

最新更新