안드로이드 개발 질문/답변
(글 수 45,052)
질문이 있습니다.
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하는게 나은가요?
타임 아웃을 해결 할 방법이 전혀 없나요???
아시는 분 좀 알려주세요...




timeout 시간을 더 늘려주셔야 될거같은데요
해당시간에 접속을 못하고 넘어가서 오류 뜨는거 같은데요