Android: Socket not connecting and throws exception -
i having following android code connects web socket program. web socket running on java application. both socket , android code in eclipse.
the problem is, android program not connecting socket @ all. handled under button click mentioned in code below. after line socket = new socket("192.168.1.21", 8081);
throwing exception, not sure why. tried refer sample code internet, couldn't see strange issue in below code.
could please me on solving please?
android code:
mhandler = new handler(); clientthread = new clientthread(); button connectbtn = (button) findviewbyid(r.id.button2); connectbtn.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { // todo auto-generated method stub //start contacting socket mhandler.post(mupdate); } }); private runnable mupdate = new runnable() { public void run() { try { clientthread.run(); pw = new printwriter(socket.getoutputstream(), true); edittext randtxtfield = (edittext) findviewbyid(r.id.edittext1); pw.println(randtxtfield.gettext().tostring()); pw.flush(); } catch (exception ex) { ex.printstacktrace(); } // read randrom id returned socket bufferedreader socketreader; try { socketreader = new bufferedreader(new inputstreamreader(socket.getinputstream())); msgstr = socketreader.readline(); log.d("msgstr: ", msgstr); } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } } }; class clientthread implements runnable { @override public void run() { try { // exception throw when executing line itself... socket = new socket("192.168.1.21", 8081); } catch (unknownhostexception e1) { e1.printstacktrace(); } catch (ioexception e1) { e1.printstacktrace(); } } }
exception:
03-24 14:51:54.672: d/dalvikvm(21673): gc_for_alloc freed 295k, 4% free 9800k/10128k, paused 19ms, total 20ms 03-24 14:54:19.974: d/socketserverip(21673): 192.168.1.21 03-24 14:54:19.984: w/system.err(21673): android.os.networkonmainthreadexception 03-24 14:54:19.984: w/system.err(21673): @ android.os.strictmode$androidblockguardpolicy.onnetwork(strictmode.java:1145) 03-24 14:54:19.984: w/system.err(21673): @ libcore.io.blockguardos.connect(blockguardos.java:84) 03-24 14:54:19.984: w/system.err(21673): @ libcore.io.iobridge.connecterrno(iobridge.java:127) 03-24 14:54:19.984: w/system.err(21673): @ libcore.io.iobridge.connect(iobridge.java:112) 03-24 14:54:19.984: w/system.err(21673): @ java.net.plainsocketimpl.connect(plainsocketimpl.java:192) 03-24 14:54:19.984: w/system.err(21673): @ java.net.plainsocketimpl.connect(plainsocketimpl.java:172) 03-24 14:54:19.984: w/system.err(21673): @ java.net.socket.startupsocket(socket.java:567) 03-24 14:54:19.984: w/system.err(21673): @ java.net.socket.<init>(socket.java:226) 03-24 14:54:19.984: w/system.err(21673): @ com.example.cobrowseandroid.randomidactivity$clientthread.run(randomidactivity.java:262) 03-24 14:54:19.984: w/system.err(21673): @ com.example.cobrowseandroid.randomidactivity$1.run(randomidactivity.java:152) 03-24 14:54:19.984: w/system.err(21673): @ android.os.handler.handlecallback(handler.java:733) 03-24 14:54:19.984: w/system.err(21673): @ android.os.handler.dispatchmessage(handler.java:95) 03-24 14:54:19.984: w/system.err(21673): @ android.os.looper.loop(looper.java:136) 03-24 14:54:19.984: w/system.err(21673): @ android.app.activitythread.main(activitythread.java:5017) 03-24 14:54:19.984: w/system.err(21673): @ java.lang.reflect.method.invokenative(native method) 03-24 14:54:19.984: w/system.err(21673): @ java.lang.reflect.method.invoke(method.java:515) 03-24 14:54:19.984: w/system.err(21673): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:779) 03-24 14:54:19.984: w/system.err(21673): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:595) 03-24 14:54:19.984: w/system.err(21673): @ dalvik.system.nativestart.main(native method) 03-24 14:54:19.984: d/androidruntime(21673): shutting down vm 03-24 14:54:19.984: w/dalvikvm(21673): threadid=1: thread exiting uncaught exception (group=0x415efba8) 03-24 14:54:19.984: e/androidruntime(21673): fatal exception: main 03-24 14:54:19.984: e/androidruntime(21673): process: com.example.cobrowseandroid, pid: 21673 03-24 14:54:19.984: e/androidruntime(21673): java.lang.nullpointerexception 03-24 14:54:19.984: e/androidruntime(21673): @ com.example.cobrowseandroid.randomidactivity$1.run(randomidactivity.java:179) 03-24 14:54:19.984: e/androidruntime(21673): @ android.os.handler.handlecallback(handler.java:733) 03-24 14:54:19.984: e/androidruntime(21673): @ android.os.handler.dispatchmessage(handler.java:95) 03-24 14:54:19.984: e/androidruntime(21673): @ android.os.looper.loop(looper.java:136) 03-24 14:54:19.984: e/androidruntime(21673): @ android.app.activitythread.main(activitythread.java:5017) 03-24 14:54:19.984: e/androidruntime(21673): @ java.lang.reflect.method.invokenative(native method) 03-24 14:54:19.984: e/androidruntime(21673): @ java.lang.reflect.method.invoke(method.java:515) 03-24 14:54:19.984: e/androidruntime(21673): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:779) 03-24 14:54:19.984: e/androidruntime(21673): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:595) 03-24 14:54:19.984: e/androidruntime(21673): @ dalvik.system.nativestart.main(native method)
you should not invoke network stuff on ui thread.
you calling
mhandler.post(mupdate)
which runs in current thread (ui thread) method "run". use e.g. instead:
thread t = new thread(mupdate); t.start();
to run network code in separated thread...
also don't forget call ui related code in ui thread (for e.g. getactivity().runonuithread()).
Comments
Post a Comment