노트북과 넥서스7에서 소켓 통신 프로그램을 개발하고 있습니다.

제가 네트워크 지식이 별로 없어서 무지 헤매고 있는 것 같은데

현재 상황에 대해 구글링을 해봐도 답을 찾을 수 없어 질문을 올립니다.


회사 네트워크를 통해 넥서스7으로 와이파를 연결할 시 소켓 통신은 잘 되고 있습니다.(노트북은 고정ip)

제가 최종적으로 구현하고 싶은 환경은

노트북의 무선랜카드로 adhoc 네트워크를 구성하고 넥서스7으로 여기에 접속하여

소켓 통신을 수행하는 것입니다.

찾아본 결과 안드로이드는 adhoc이 막혀있어서 Connectify라는 툴을 사용하여 노트북에 넥서스7이 연결에 성공하였습니다.

이 경우 ipconfig를 통해 소스코드에서 조회되는 어댑터들의 ip주소를 변경해 가면서 소켓 통신을 시도하였는데

전혀 되지 않고 있습니다.


에러메시지는 다음과 같습니다.

09-27 14:25:53.049: E/TCP(14076): java.net.ConnectException: failed to connect to /192.1.1.22 (port 5555): connect failed: ETIMEDOUT (Connection timed out)

09-27 14:25:53.049: E/TCP(14076): at libcore.io.IoBridge.connect(IoBridge.java:114)

09-27 14:25:53.049: E/TCP(14076): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)

09-27 14:25:53.049: E/TCP(14076): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)

09-27 14:25:53.049: E/TCP(14076): at java.net.Socket.startupSocket(Socket.java:566)

09-27 14:25:53.049: E/TCP(14076): at java.net.Socket.<init>(Socket.java:225)

09-27 14:25:53.049: E/TCP(14076): at com.example.fd_proi.Ink$2.run(Ink.java:109)

09-27 14:25:53.049: E/TCP(14076): at java.lang.Thread.run(Thread.java:856)

09-27 14:25:53.049: E/TCP(14076): Caused by: libcore.io.ErrnoException: connect failed: ETIMEDOUT (Connection timed out)

09-27 14:25:53.049: E/TCP(14076): at libcore.io.Posix.connect(Native Method)

09-27 14:25:53.049: E/TCP(14076): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)

09-27 14:25:53.049: E/TCP(14076): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)

09-27 14:25:53.049: E/TCP(14076): at libcore.io.IoBridge.connect(IoBridge.java:112)



또는 

09-27 14:35:37.509: E/TCP(16810): android.os.NetworkOnMainThreadException

09-27 14:35:37.509: E/TCP(16810): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)

09-27 14:35:37.509: E/TCP(16810): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)

09-27 14:35:37.509: E/TCP(16810): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)

09-27 14:35:37.509: E/TCP(16810): at libcore.io.IoBridge.connect(IoBridge.java:112)

09-27 14:35:37.509: E/TCP(16810): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)

09-27 14:35:37.509: E/TCP(16810): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)

09-27 14:35:37.509: E/TCP(16810): at java.net.Socket.startupSocket(Socket.java:566)

09-27 14:35:37.509: E/TCP(16810): at java.net.Socket.<init>(Socket.java:225)

09-27 14:35:37.509: E/TCP(16810): at com.example.fd_proi.Function$TCPclient.run(Function.java:150)

09-27 14:35:37.509: E/TCP(16810): at com.example.fd_proi.Function.onCreate(Function.java:130)

09-27 14:35:37.509: E/TCP(16810): at android.app.Activity.performCreate(Activity.java:5008)

09-27 14:35:37.509: E/TCP(16810): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)

09-27 14:35:37.509: E/TCP(16810): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)

09-27 14:35:37.509: E/TCP(16810): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)

09-27 14:35:37.509: E/TCP(16810): at android.app.ActivityThread.access$600(ActivityThread.java:130)

09-27 14:35:37.509: E/TCP(16810): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)

09-27 14:35:37.509: E/TCP(16810): at android.os.Handler.dispatchMessage(Handler.java:99)

09-27 14:35:37.509: E/TCP(16810): at android.os.Looper.loop(Looper.java:137)

09-27 14:35:37.509: E/TCP(16810): at android.app.ActivityThread.main(ActivityThread.java:4745)

09-27 14:35:37.509: E/TCP(16810): at java.lang.reflect.Method.invokeNative(Native Method)

09-27 14:35:37.509: E/TCP(16810): at java.lang.reflect.Method.invoke(Method.java:511)

09-27 14:35:37.509: E/TCP(16810): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)

09-27 14:35:37.509: E/TCP(16810): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)

09-27 14:35:37.509: E/TCP(16810): at dalvik.system.NativeStart.main(Native Method)


과 같이 메시지가 발생합니다.


노트북이나 넥서스7의 설정을 변경해 줘야 하는 것인지..

아니면 TCP/IP를 이용한 소켓 프로그램이 잘못된 것인지..

고수님들의 답변 부탁드립니다..ㅜㅜ