当前位置: 代码迷 >> Android >> android Socket 超时有关问题
  详细解决方案

android Socket 超时有关问题

热度:55   发布时间:2016-05-01 17:44:52.0
android Socket 超时问题
各位大虾帮忙看一下,我用以下代码设置超时,我设置超时的时间是5秒(5000ms),但是我要等很久才能看到抛出的异常我计算了一下大概要一分钟左右,但是我发现,无论我将时间设置为多久,他都是这个时候,郁闷的很啦,求大侠解惑。
Java code
设置超时的代码SocketAddress remoteAddr = new InetSocketAddress(szIP,nPort); //获取sockaddress对象m_hSocket.connect(remoteAddr, 5000); //设置连接超时 5秒


Java code
过很长时间后抛出的异常Log.i("hhh", e.getMessage());Toast.makeText(TMActivity.this, "连接超时,请检查网络是否连接正常", Toast.LENGTH_SHORT).show();


------解决方案--------------------
用wifi试试
------解决方案--------------------
你可以在m_hSocket.connect(remoteAddr, 5000);前后加上当前时间,然后计算两个时间差,看是否超时刚好为5000毫秒,以此判断此语句是否运行正常。否则,检查其它代码。
------解决方案--------------------
可以自己写个定时器:
Timer timer = new Timer();
TimerTask tt = new TimerTask() {
@Override
public void run() {
//判定超时后执行操作
handler.sendEmptyMessage(1);
if (timer!=null) {
timer.cancel();
timer.purge();
System.out.println("关闭定时器!");
}
}
};
//启动定时器
timer.schedule(tt, 30000, 1);
------解决方案--------------------
你可能需要搞清楚连接超时和socket超时的区别
------解决方案--------------------
socket超时是socket对象执行setSoTimeout(int timeout); 方法,你仅仅是设置的是连接超时
  相关解决方案