精易论坛
标题:
android 网络通信基础Socket (一)
[打印本页]
作者:
945426557
时间:
2015-8-23 12:52
标题:
android 网络通信基础Socket (一)
首先画界面 : 一个TextView 一个Button
接着是权限:<uses-permission android:name="android.permission.INTERNET"/> 需要给你的APP一个访问网络的权限
一个易语言服务器 IP地址:192.168.1.181 端口:8866
新手教程大神勿喷,不惜勿喷...
需要的命令:
Socket socket =new Socket ("192.168.1.181",8866); 首先实例化一个Socket 函数 也就相当于易语言的 客户Duan.连接(IP地址,端口) ;
它需要抛出一个异常 判断服务器是否连接或者权限问题等等。。
============接收数据
InputStream in =socket.getInputStream(); 获取数据流,获取服务器给客户Duan发送的数据 相当于易语言的
客户Duan.取回数据();
byte[] data =new byte[1024] ; 创建一个字节组 也相当于字节集
in.read(data); 把数据流获得到的数据给附加给data
String txt =new String(data,"GBK"); android 的字体编码和PC 的字体编码不一样所以要转换一下编码
TextView text=(TextView)findViewById(R.id.text); 获取一个标签
text.settext(txt); 用标签返回服务器发送的数据
如果 InputStream 没有获取到数据它会一直等下去知道数据发送来为止,但是这样问题就出来了。如果太长时间未获得数据,会导致程序挂掉,未响应。while(ture) 也无法一直获取服务器发送信息。
下一次讲 多线程的客户Duan
============发送数据
OutputStream out =socket.getOutputStream(); 获取发送数据流
out.write("user:load....".getBytes()); 把要发送的内容转换成字节集 相当于 易语言的
客户Duan.发送数据();
其实获取数据流的方法有很多种这是比较简单的一种
------------------------------------------------------------------------------------------------------------
常见小问题:
权限给啦,代码也正确但是一点连接就出现错误。原因如下
一个APP如果在主线程中请求网络操作,将会抛出此异常。Android这个设计是为了防止网络请求时间过长而导致界面假死的情况发生。
方法简单,强制使用。一定要加到
setContentView(R.layout.main);
下面
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);}
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);}
==============================完整代码如下===============================
[attach]444342[/attach]
====================================
结果图:
[attach]444344[/attach][attach]444343[/attach]
作者:
zjwanywn
时间:
2015-8-24 08:56
很好的教程,希望楼主多多发这样的教程!
作者:
sarmanliao
时间:
2015-9-1 16:44
新生路过,对什么都有兴趣,学习一下。
作者:
bm123
时间:
2015-12-18 18:58
我是第一次接触socket,感觉有点吃力,有没有再基础点的教程,因为英语不好,看着有点吃力了,楼主莫笑
作者:
liuaolan
时间:
2016-9-11 12:13
这是用什么写的/?
作者:
风过长街
时间:
2016-9-12 22:49
最近想学APP算法解密,来找下资源
作者:
泪无言
时间:
2016-9-16 21:18
有点看不懂
作者:
冷水泡面
时间:
2016-11-2 02:12
好复杂噢~思路有点乱
作者:
Youlor
时间:
2016-11-26 18:58
新人感谢分享,多多关照!
作者:
ncdark
时间:
2016-12-4 12:03
学习了 。
作者:
月儿弯弯
时间:
2017-5-3 18:16
顶一个
欢迎光临 精易论坛 (https://125.confly.eu.org/)
Powered by Discuz! X3.4