2011-08-10 87 views
0

我已经开始使用套接字编程的Android项目。平台是Android 3.0。由于平台要求,我在AsyncTask中应用套接字操作。Android 3.0套接字响应延迟

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

我试图把一个计时器

Timer myTimer = new Timer(); 

myTimer.wait(2000); 

但只是使整个反应不能工作。任何建议将不胜感激。

+0

您是否正在使用某种哨兵值来向另一端表明响应已完成? –

+0

@Shane Wealti 没有在我身边专门派出价值,但总是喜欢像命令提示行指示的开始: 服务器名称> – honour

回答

0

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

你不希望使用一个计时器,因为:

一)即使在等待你不能确定你已经得到的值,之后

b)您会如果你很快获得价值,就会不必要地放慢速度。

更好的选择是让一些代码检查循环中接收到的值,看看它是否完整,一旦完成,就移动到下一位。

+0

你的建议的解决方案是唯一有效的,如果我知道我是怎样的反应每次都会得到。我现在知道数据已经完整,因为我处于测试环境中,并且所有内容都是静态的,所以您的建议不适用于实时解决方案。但是非常感谢您的时间。我很感激。 – honour

+0

只需添加一个超时时间 - 如果这么多秒钟过去了,并且您还没有收到完整数据包或者没有完成任何进度,则假设发送出错并继续前进。 – wohanley

+0

我不能只是假设int传输错误,只是继续前进。我需要处理其他与此相关的事情。 – honour