解决方案 »

  1.   

    Logcat中的信息是:
    thread exiting with uncaugt exception group=0x40a71930
      

  2.   

    你的Android终端连接上WiFi了吗?
      

  3.   

    socket通讯要放在线程里处理。
      

  4.   

    刚才试了一下,把Androidmanifest.xml文件中的
    <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="17" />修改为:<uses-sdk
            android:minSdkVersion="7"/>就可以正常连接了。
    想请教一下如果不修改这个地方,有没有其他的解决办法?
    谢谢!
      

  5.   

    你贴个完整log,信息太少不好分析。
      

  6.   

    LogCat信息如下:08-07 02:17:02.412: D/gralloc_goldfish(800): Emulator without GPU emulation detected.
    08-07 02:18:17.781: D/AndroidRuntime(800): Shutting down VM
    08-07 02:18:17.781: W/dalvikvm(800): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
    08-07 02:18:17.821: E/AndroidRuntime(800): FATAL EXCEPTION: main
    08-07 02:18:17.821: E/AndroidRuntime(800): android.os.NetworkOnMainThreadException
    08-07 02:18:17.821: E/AndroidRuntime(800):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at libcore.io.IoBridge.connect(IoBridge.java:112)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at java.net.Socket.startupSocket(Socket.java:566)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at java.net.Socket.tryAllAddresses(Socket.java:127)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at java.net.Socket.<init>(Socket.java:177)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at java.net.Socket.<init>(Socket.java:149)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at com.example.testsocket.MainActivity$buttonOnClickListener.onClick(MainActivity.java:62)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at android.view.View.performClick(View.java:4204)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at android.view.View$PerformClick.run(View.java:17355)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at android.os.Handler.handleCallback(Handler.java:725)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at android.os.Handler.dispatchMessage(Handler.java:92)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at android.os.Looper.loop(Looper.java:137)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at android.app.ActivityThread.main(ActivityThread.java:5041)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at java.lang.reflect.Method.invokeNative(Native Method)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at java.lang.reflect.Method.invoke(Method.java:511)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    08-07 02:18:17.821: E/AndroidRuntime(800):  at dalvik.system.NativeStart.main(Native Method)
      

  7.   

    楼上的好几位都提到了重点:从Android 4.0开始,Google限制了UI线程访问网络,如果在UI线程中访问网络会抛出
    NetworkOnMainThreadException异常。解决方案有两个,一个是设置线程的StrickMode,通过StrictMode.ThreadPolicy.Builder的permitNetwork ()来实现允许UI线程访问网络(不推荐)。
    另一个就是用AsyncTask,线程池等手段,在后台进行网络访问,再由UI展示在前台。