当前位置: 代码迷 >> Android >> socket 连接超时?该怎么处理
  详细解决方案

socket 连接超时?该怎么处理

热度:74   发布时间:2016-05-01 21:10:57.0
socket 连接超时??
Java code
    public ClientSocketEx(){        try        {            clientSocket=new Socket();            clientSocket.setSoTimeout(10000);                        SimpleDateFormat tempDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");            String datetime = tempDate.format(new java.util.Date());                                    Log.e("sk",datetime+"__1");             SocketAddress socketAddress = new InetSocketAddress("124.XXX.86.XX",10000); //获取sockaddress对象             clientSocket.connect(socketAddress,10000);                                     new PutThread(clientSocket);            new GetThread(clientSocket);                      }        catch(UnknownHostException che)        {            try            {                clientSocket.close();                Log.e("sk", "UnknownHostException");            }            catch(IOException ex)            {                            }        }        catch(IOException e)        {            try            {                clientSocket.close();                Log.e("sk", e.getClass().getName());                Log.e("sk", e.getMessage());                SimpleDateFormat tempDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");                String datetime2 = tempDate.format(new java.util.Date());                Log.e("sk",datetime2+"__2");            }            catch(IOException ex)            {                            }        }





05-15 23:31:54.345: ERROR/sk(5655): 2012-05-15 23:31:54__1
05-15 23:31:55.845: ERROR/sk(5655): java.net.SocketTimeoutException
05-15 23:31:55.845: ERROR/sk(5655): Connection timed out
05-15 23:31:55.855: ERROR/sk(5655): 2012-05-15 23:31:55__2


我就不明白,明明白白设了10000=10秒的超时时间.怎么就1秒中就说timeout了??

另外这种异常,也不是每次都报,一般是3,4次报一次!

------解决方案--------------------
//试下这种
Socket socket = new Socket();
socket.connect(new InetSocketAddress(socketIp, socketport),
1000 * 10);//10秒
------解决方案--------------------
检查服务器端是否正常;

将:
SocketAddress socketAddress = new InetSocketAddress("124.XXX.86.XX",10000); //获取sockaddress对象
 
clientSocket.connect(socketAddress,10000);
去掉;
改成直接new Socket(ipAddress, Host);

------解决方案--------------------
可能是其它原因导致的错误提示,请断点调试一下。
------解决方案--------------------
如果代码调式无错的话,剩下就是网络与服务器端问题了!!!
  相关解决方案