开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 9235|回复: 10
收起左侧

[开源实例] android 网络通信基础Socket (一)

[复制链接]
发表于 2015-8-23 12:52:30 | 显示全部楼层 |阅读模式   河南省新乡市
首先画界面 : 一个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);}

==============================完整代码如下===============================

====================================
结果图:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 2好评 +1 精币 +2 收起 理由
zjwanywn + 1 感谢分享,很给力!~
年少无知丿 + 1 + 1 可以的

查看全部评分

本帖被以下淘专辑推荐:

结帖率:50% (5/10)
发表于 2017-5-3 18:16:00 | 显示全部楼层   广东省广州市
顶一个
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2016-12-4 12:03:03 | 显示全部楼层   广东省广州市
学习了 。
回复 支持 反对

使用道具 举报

发表于 2016-11-26 18:58:30 | 显示全部楼层   北京市北京市
新人感谢分享,多多关照!
回复 支持 反对

使用道具 举报

发表于 2016-11-2 02:12:20 | 显示全部楼层   广东省江门市
好复杂噢~思路有点乱
回复 支持 反对

使用道具 举报

发表于 2016-9-16 21:18:58 | 显示全部楼层   江西省南昌市
有点看不懂
回复 支持 反对

使用道具 举报

结帖率:84% (16/19)

签到天数: 2 天

发表于 2016-9-12 22:49:40 | 显示全部楼层   江西省南昌市
最近想学APP算法解密,来找下资源         
回复 支持 反对

使用道具 举报

结帖率:50% (3/6)
发表于 2016-9-11 12:13:31 | 显示全部楼层   福建省三明市
这是用什么写的/?
回复 支持 反对

使用道具 举报

结帖率:93% (255/274)

签到天数: 21 天

发表于 2015-12-18 18:58:53 | 显示全部楼层   河南省郑州市
我是第一次接触socket,感觉有点吃力,有没有再基础点的教程,因为英语不好,看着有点吃力了,楼主莫笑
回复 支持 反对

使用道具 举报

发表于 2015-9-1 16:44:21 | 显示全部楼层   广东省肇庆市
新生路过,对什么都有兴趣,学习一下。
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 1 天

发表于 2015-8-24 08:56:25 | 显示全部楼层   广东省东莞市
很好的教程,希望楼主多多发这样的教程!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表