android - Android 中跨异步套接字连接的大数据传输问题

标签 android sockets asynchronous 3g

我有一个 Android 应用程序,它通过异步套接字连接与服务器通信,以传输较大的信息包(最多 11 兆字节)。为了适应这种交互,我在数据发送和接收的关键点放置了小 sleep 。在 WiFi 上,连接有效。对信息的大小进行一次读取或写入似乎是不够的,但我已经创建了一些函数来继续读取套接字,直到传输完成。

正如我所说,所有这些都适用于 WiFi。然而,在 3G 或边缘网络上,传输失败,中途中断,并且通常被窃听。我已经进行了多次检查和休眠,以确保信息有机会通过,但未能通过。

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

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

谢谢。

最佳答案

事实证明,实际问题是每次 read() 收到的数量比我预期的要少得多。在程序知道如何使用它之前,我的程序要求通过 XML 发送整个模式。它没有收到足够的字符串,因此会死掉。现在它会检查/schema 标签是否在字符串中(通过 if (!response.contains("/schema"))),并且在发现或超时之前不会停止读取。

关于android - Android 中跨异步套接字连接的大数据传输问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6024801/

相关文章:

java - 将包从 android studio 移动到 eclipse

c++ - 如何读取一个http请求(一个http代理服务器)

javascript - 负载过大时 typescript 异步功能不起作用

javascript - 是否可以在 react-native 的构造函数中调用异步函数?

android - 如何在撰写中控制 AnimatedVisibility 的持续时间?

android - 如何将数据绑定(bind)到 android 4.0 中的编辑文本和微调器

java - Android 中的网络

c - 处理多个 UDP 流

java - 通过DatagramSocket发送列表?

Python Asyncio 任务取消