package temp.asd2;
import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException;
import android.app.Activity; import android.os.Bundle;
public class Temp2Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
System.out.println("Exception 0");
Socket client = new Socket("내아이피",5001);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
System.out.println("Exception 1");
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("Exception 2");
e.printStackTrace();
}
}
}
안녕하세요 갑자기 아이스크림 샌드위치 공부한면서 질문 드림니다.
얼마전에 ICS의 소켓에 대해서 질문 드렸는데 답변이 없으셔서 ㅠㅠ.
ICS버전부터 (4.0.3)에서 TCP소켓이 가능한지에대해서 질문드림니다.
갤럭시 s2의 이전버전 2.3.3에서는 위와같은 TCP소켓으로 컴퓨터와 통신이 가능하였는데
이번 4.0.3 에서부터는 Exception0을 까지만 출력외고 1이나 2도 안뜨고 그대로 죽어버리더군요 ....
혹시 이에대해서 알고계신분이나 해결책을 아시는분이 있으신가요 ..?????
(안드로이드 메니퍼스트에 <uses-permission android:name="android.permission.INTERNET"/> 권한은 주어진 상태임니다 ㅠㅠ)
로그켓 내용도 올려봄니다.
03-19 11:09:18.855: I/System.out(691): Exception 0
03-19 11:09:18.876: D/AndroidRuntime(691): Shutting down VM
03-19 11:09:18.876: W/dalvikvm(691): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
03-19 11:09:18.906: E/AndroidRuntime(691): FATAL EXCEPTION: main
03-19 11:09:18.906: E/AndroidRuntime(691): java.lang.RuntimeException: Unable to start activity ComponentInfo{temp.asd2/temp.asd2.Temp2Activity}: android.os.NetworkOnMainThreadException
03-19 11:09:18.906: E/AndroidRuntime(691): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
03-19 11:09:18.906: E/AndroidRuntime(691): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
03-19 11:09:18.906: E/AndroidRuntime(691): at android.app.ActivityThread.access$600(ActivityThread.java:123)
03-19 11:09:18.906: E/AndroidRuntime(691): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
03-19 11:09:18.906: E/AndroidRuntime(691): at android.os.Handler.dispatchMessage(Handler.java:99)
03-19 11:09:18.906: E/AndroidRuntime(691): at android.os.Looper.loop(Looper.java:137)
03-19 11:09:18.906: E/AndroidRuntime(691): at android.app.ActivityThread.main(ActivityThread.java:4424)
03-19 11:09:18.906: E/AndroidRuntime(691): at java.lang.reflect.Method.invokeNative(Native Method)
03-19 11:09:18.906: E/AndroidRuntime(691): at java.lang.reflect.Method.invoke(Method.java:511)
03-19 11:09:18.906: E/AndroidRuntime(691): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-19 11:09:18.906: E/AndroidRuntime(691): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-19 11:09:18.906: E/AndroidRuntime(691): at dalvik.system.NativeStart.main(Native Method)
03-19 11:09:18.906: E/AndroidRuntime(691): Caused by: android.os.NetworkOnMainThreadException
03-19 11:09:18.906: E/AndroidRuntime(691): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
03-19 11:09:18.906: E/AndroidRuntime(691): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
03-19 11:09:18.906: E/AndroidRuntime(691): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
03-19 11:09:18.906: E/AndroidRuntime(691): at libcore.io.IoBridge.connect(IoBridge.java:112)
03-19 11:09:18.906: E/AndroidRuntime(691): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
03-19 11:09:18.906: E/AndroidRuntime(691): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
03-19 11:09:18.906: E/AndroidRuntime(691): at java.net.Socket.startupSocket(Socket.java:566)
03-19 11:09:18.906: E/AndroidRuntime(691): at java.net.Socket.tryAllAddresses(Socket.java:127)
03-19 11:09:18.906: E/AndroidRuntime(691): at java.net.Socket.<init>(Socket.java:177)
03-19 11:09:18.906: E/AndroidRuntime(691): at java.net.Socket.<init>(Socket.java:149)
03-19 11:09:18.906: E/AndroidRuntime(691): at temp.asd2.Temp2Activity.onCreate(Temp2Activity.java:19)
03-19 11:09:18.906: E/AndroidRuntime(691): at android.app.Activity.performCreate(Activity.java:4465)
03-19 11:09:18.906: E/AndroidRuntime(691): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
03-19 11:09:18.906: E/AndroidRuntime(691): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
03-19 11:09:18.906: E/AndroidRuntime(691): ... 11 more
간단한 실마리라도있나요 ㅠㅜ
기본 자바 소켓으로 알고있는데... 4.0.3판올림이 되었다고 죽어버리다니...... ㄷㄷㄷㄷㄷ말이지요...
아니면 제가 알고있는 기본 소켓 통신 방법이 잘못된건지 흠....




대충 로그 보니깡 NetworkOnMainThreadException 가 보이는군요..
ICS 버전부터는 main thread 즉 UI thread 에서는 소켓사용이 금지되어 있는가봅니다.
그냥 sub Thread 상황에서 네트워크 해보세요..