android项目socket编程时遇到的问题
来源:互联网 发布:淘宝上开茶叶店 编辑:程序博客网 时间:2024/06/03 16:17
出处:http://blog.csdn.net/cxllyg/article/details/7460187?reload#reply
最近在玩android,学习到网络这一部分,写了一个电脑本机做服务器,模拟器做客户端的socket通信程序,但手机模拟器客户端就是连不上电脑的服务器端,执行到Socket socket=new Socket("xx.xx.xxx.xxx",8888);就抛异常。我又自己写了一个普通的Java客户端,测试能连上服务器端。所以代码应该没有问题,问题就在于手机模拟器。同学的电脑上装了2.0的android模拟器,我用同学的手机模拟器测试也能连上服务器端。所以可能是模拟器版本的问题。几经周折,无法解决,暂且搁置。
紧接着,我又写了一个通过Http去请求Tomcat 服务器上的资源,执行到DefaultHttpClient().execute(httpPostRequest)就抛异常,但在模拟器的浏览器上通过同样的地址就可以访问到资源,百度之没解决。
感觉很郁闷,网络的两个程序都被搁置了,但感觉它们的错误原因应该是一样。故又单步调试之,发现 socket程序出现android.os.NetworkOnMainThreadException异常,百度之,终于找到前两个程序失败的原因了,我用的是Android 4.0版本,而Android 3.0以上对网络有了更多的限制。
总结如下, Android网络编程要注意以下两点:
一。android里自己电脑的IP地址是10.0.2.2,不能用127.0.0.1或者localhost,即最好使用自己电脑的IP
二。Android 3.0以上不能在android的主线程中执行一个网络操作,否则会出现 android.os.NetworkOnMainThreadException异常,因为主线程的操作
不能超过5秒,否则就报错了,解决方法:
(1)另开一个线程去做网络连接的操作;
(2)在activity类中的onCreate方法中添加strict代码,如下:
Java代码
public void onCreate() {
.......
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.penaltyLog()
.penaltyDeath()
.build());
}
http://blog.csdn.net/xys289187120/article/details/6636331《android调试程序相关知识。如bug,logcat,真机测试详解。》
我的项目问题:
1.起初一直报远程主机强制中止程序的错误,经查询。http://blog.csdn.net/love_world_/article/details/8130416 原来是因为两个eclipse开启的原因。
2.写的很简单的服务器与客户端的程序,只是连接的操作,如果连接成功两边各有自己写的输出语句。但是我项目的socket.accept()总是不执行,不知道为什么?后来换了个端口号。结果成功了!
3.因为上述调试只是两个java程序main函数执行,放入android中仍然不能执行。后经http://blog.csdn.net/cxllyg/article/details/7460187?reload#reply (即上面内容)在项目中加了以上代码。且导入相关包及提示选择加入了
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@SuppressLint("NewApi")
进行测试。项目运行成功!!!
很开心,很激动。
- android项目socket编程时遇到的问题
- 关于Android Socket编程遇到的问题
- android项目中,测试Socket连接时遇到的问题
- socket的编程所遇到的问题
- DevCpp5.11 Socket编程时可能遇到的问题
- ipv6 socket 编程中遇到的问题
- 导入Android项目时遇到的问题
- Android socket 开发中遇到的问题.
- Socket遇到的问题
- Socket 编程 windows到Linux代码移植遇到的问题
- Socket 编程时候遇到的Broken pipe问题
- Socket 编程 windows到Linux代码移植遇到的问题
- Socket 编程 windows到Linux代码移植遇到的问题
- socket编程,使用tkFileDialog 传送文件遇到的问题
- socket编程中遇到的一些小问题
- Socket 编程 windows到Linux代码移植遇到的问题
- 关于php socket编程中遇到的一些问题
- Java Socket编程及遇到的一些问题
- C#中的delegate和event简单示例
- CSDN高校俱乐部招募公告
- 大批量插入数据时优化SQL语句
- 飞凌OK6410之IIC的学习1
- unix网络编程之udp
- android项目socket编程时遇到的问题
- 数组指针和指针数组的区别
- WIN7\Vista 边栏小工具的制作 HelloWorld
- c语言存储区 划分
- 黑马程序员-注解类
- 在FC6上构建内核驱动模块编译环境
- 构建嵌入式驱动开发编译环境
- Linux操作系统下设置NFS共享
- 移植vivi引导linux2.6.14.7内核修改的地方