【问题标题】:Android 3.0 socket response latencyAndroid 3.0 套接字响应延迟
【发布时间】:2011-10-23 23:36:51
【问题描述】:

我已经开始了一个使用套接字编程的 Android 项目。平台为安卓3.0。由于平台要求,我在 AsyncTask 中应用套接字操作。

我连接到服务器,成功发送命令,但问题是我收到的响应不完整。发送命令后,我必须等待一段时间才能完全响应,否则只是部分响应。我发现等待时得到完整响应的方式是在调试模式下,我等了一会儿才继续使用响应变量的下一行代码,我得到了完整的预期结果。

我试着设置一个计时器

Timer myTimer = new Timer();

myTimer.wait(2000);

但这只是使整个响应根本不起作用。任何建议将不胜感激。

【问题讨论】:

  • 您是否使用某种哨兵值向另一端指示响应已完成?
  • @Shane Wealti 我这边没有专门发送的值,但总是有一个行首指示符,如命令提示符,如:ServerName>

标签: android sockets android-asynctask latency


【解决方案1】:

首先,您不应该遇到这个问题。您的网络连接可能有问题,因为对于任何平台而言,延迟量都是不正常的。但是,如果您确实想以编程方式解决它,请继续阅读。

您不想为此使用计时器,因为:

a) 即使在等待之后,您也无法确定自己是否获得了价值,并且

b) 如果您确实快速获得价值,您将不必要地放慢速度。

更好的选择是有一些代码在循环中检查接收到的值以查看它是否完整,一旦完成,就继续进行下一位。

【讨论】:

  • 您建议的解决方案只有在我知道每次都会得到什么响应时才有效。我现在知道数据是完整的,因为我在我的测试环境中并且一切都是静态的,您的建议不是实时解决方案。但非常感谢您的时间。我很感激。
  • 只需添加一个超时时间 - 如果这么多秒过去了,您还没有收到完整的数据包或没有取得任何进展,请假设传输错误并继续。
  • 我不能仅仅假设一个错误的 int 传输就继续前进。我需要处理与该响应有关的其他事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
  • 2023-03-27
  • 2010-09-30
  • 1970-01-01
相关资源
最近更新 更多