日期:2014-05-20  浏览次数:20679 次

求助:J2ME Socket 超时设置问题
问题很简单,手机需要连接一个外部服务器,发送消息,需要有断线重连的功能,如果服务器开启,则连接上去的时间很短,但是如果服务器未开启,或者网络状况不是很好,那么打开连接就很费时间,并且在打开连接的时候,程序基本僵死,影响其他线程的执行。

本人设想在连接的地方设置一个超时时间,例如500ms,如果在这个时间内无法连接上,则放弃该次连接,在一定的间隔之后再行尝试,但查过这方面的API,仅有一个Connector.open(String url,int mode, boolean timeout)可以使用,并且也无法设置超时时间,经测试,在服务器关闭的情况下,这一个尝试大约需要20s的时间,在此期间,程序完全僵死,无法响应。

------解决方案--------------------
你可以自己设置一个timer, 本身你联网的代码就是在独立的线程内, 你设置一个timer到一定时间抛个异常出来, 看看能否跳出来。