질문이 있습니다.

Connection timed out 이 나는데요..

접속자가 많을 때 나는 것 같습니다.

접속이 될 때보다 안될 때가 더 많습니다.

접속이 원활하게 되는 방법을 찾고자 합니다.

socketchannel.socket().connect(runHost, 2000);
이 구간에서 자꾸 에러가 납니다.

해결 방법이 없을까요???

 

 protected void connect()
 {
  if (state < CONNECT)
  {
   try
   {
    System.setProperty("java.net.preferIPv6Addresses", "false");
    SocketAddress runHost = new InetSocketAddress(host, port);
    selector = Selector.open();
    socketchannel = SocketChannel.open();
    socketchannel.socket().connect(runHost, 2000);
    socketchannel.configureBlocking(false);
    socketchannel.finishConnect();
    socketchannel.register(selector, SelectionKey.OP_READ);
    state = CONNECT;
    login();
   }
   catch (java.net.SocketTimeoutException e)
   {
    state = DIS_SOCKET_TIMEOUT_EXC;
    e.printStackTrace();
   }
   catch (java.net.ConnectException e)
   {
    state = DIS_CONNECT_EXC;
    e.printStackTrace();
   }
   catch (RuntimeException e)
   {
    state = DIS_RUNTIME_EXC;
    e.printStackTrace();
   }
   catch (Exception e)
   {
    state = DIS_EXC;
    e.printStackTrace();
   }
  }
 }


11번 라인에서 Connection timed out 에러가 납니다.

로그켓입니다.

 

 WARN/System.err(22089): java.net.SocketTimeoutException: Connection timed out
 WARN/System.err(22089):     at org.apache.harmony.luni.platform.OSNetworkSystem.connect(Native Method)
 WARN/System.err(22089):     at dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:357)
 WARN/System.err(22089):     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:204)
 WARN/System.err(22089):     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:437)
 WARN/System.err(22089):     at java.net.Socket.connect(Socket.java:1002)
 WARN/System.err(22089):     at org.apache.harmony.nio.internal.SocketChannelImpl$SocketAdapter.connect(SocketChannelImpl.java:608)
 WARN/System.err(22089):     at com.test.NetworkSet.connect(NetworkSet.java:71)
 WARN/System.err(22089):     at com.test.NetworkThread.connect(NetworkThread.java:140)
 WARN/System.err(22089):     at com.test.NetworkThreadDrawing$4.handleMessage(NetworkThreadDrawing.java:352)
 WARN/System.err(22089):     at android.os.Handler.dispatchMessage(Handler.java:99)
 WARN/System.err(22089):     at android.os.Looper.loop(Looper.java:130)
 WARN/System.err(22089):     at android.app.ActivityThread.main(ActivityThread.java:3687)
 WARN/System.err(22089):     at java.lang.reflect.Method.invokeNative(Native Method)
 WARN/System.err(22089):     at java.lang.reflect.Method.invoke(Method.java:507)
 WARN/System.err(22089):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
 WARN/System.err(22089):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
 WARN/System.err(22089):     at dalvik.system.NativeStart.main(Native Method)

 

???타임 아웃을 해결 할 방법이 없을까요???

이 문제를 해결 하려면,,, Connect를 몇 번 반복해서 연결이 될때까지 해주는게 나을까요?

아니면.. 사용자에게 서버 접속이 원활하지 않다고 메시지를 뿌려주고 Disconnect하는게 나은가요?

타임 아웃을 해결 할 방법이 전혀 없나요???

아시는 분 좀 알려주세요...