这两天做了一个手机和电脑通信利用socket进行网络通信的小程序,上图先:
在写程序的过程中发现了很多问题。。。
一、电脑和手机的IP必须在同一个网段,也就是IP的前三段必须是一样的。
刚开始电脑和手机都连着老师办公室的 无线,可是却连不上。。折腾了好久才发现虽然都是连在同一个路由器,网段却不一样。(老师说应该是一样的,我也不知道怎么回事。)后来修改了手机的IP地址,才能连上。关于如何修改手机IP,百度一下就OK了。
二、ReadLine()读数据阻塞问题
终于连接上了,却读不出数据。经过debug发现readline后面的代码都不再执行了。上网搜了一下readline,才发现原来是个坑。有关知识看这里
小心readline。解决方法:在每次发送数据前加换行符。
<span style="font-size:14px;">out.write((data + '\n').getBytes("GBK"));</span>
解决方法:在将数据写入流的时候,指定数据的编码格式。
<span style="font-size:14px;">writer.write(me.getBytes("utf-8"));</span>
<span style="font-size:14px;">textView.append("服务器:" + b + '\n');</span>抛出
解决方法:在主线程用一个handler对象来处理消息,在自己创建的线程中用handler对象向主线程发送消息。
主线程:
新线程:
原文地址:http://blog.csdn.net/liangcaiyun2013/article/details/44960837