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