说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Android开发进阶之NIO非阻塞包(三)

HTML文档下载 WORD文档下载 PDF文档下载
Android开发进阶之NIO非阻塞包(三)

作者:Android开发网


   有关Android NIO的精髓主要用于高负载的Socket网络传输,相对于传统I/O模型的Socket传输方式的优势,我们已经在 Android开发进阶之NIO非阻塞包(一) 中讲到了,这里不再赘述,一起来看看Android NIO有关Socket操作提供的类吧:

  一、ServerSocketChannel 服务器套接字通道在Android SDK中查找package名为  java.nio.channels.ServerSocketChannel

   在Java的NIO中,ServerSocketChannel对应的是传统IO中的ServerSocket,通过ServerSocketChannel类的socket() 方法可以获得一个传统的ServerSocket对象,同时从ServerSocket对象的getChannel() 方法,可以获得一个ServerSocketChannel()对象,这点说明NIO的ServerSocketChannel和传统IO的ServerSocket是有关联的,实例化ServerSocketChannel 只需要直接调用ServerSocketChannel 类的静态方法open()即可。

  二、 SocketChannel 套接字通道 java.nio.channels.SocketChannel   

  在Java的New I/O中,处理Socket类对应的东西,我们可以看做是SocketChannel,套接字通道关联了一个Socket类,这一点使用SocketChannel类的socket() 方法可以返回一个传统IO的Socket类。SocketChannel()对象在Server中一般通过Socket类的getChannel()方法获得。

 三、SelectionKey 选择键 java.nio.channels.SelectionKey

  在NIO中SelectionKey和Selector是最关键的地方,SelectionKey类中描述了NIO中比较重要的事件,比如OP_ACCEPT(用于服务器端)、OP_CONNECT(用于客户端)、OP_READ和OP_WRITE。

 四、Selector 选择器 java.nio.channels.Selector

  在NIO中注册各种事件的方法主要使用Selector来实现的,构造一个Selector对象,使用Selector类的静态方法open()来实例化。

  对于Android平台上我们实现一个非阻塞的服务器,过程如下:

   1. 通过Selector类的open()静态方法实例化一个Selector对象。

   2. 通过ServerSocketChannel类的open()静态方法实例化一个ServerSocketChannel对象。

   3. 显示的调用ServerSocketChannel对象的configureBlocking(false);方法,设置为非阻塞模式,Android123提示网友这一步十分重要。

   4. 使用ServerSocketChannel对象的socket()方法返回一个ServerSocket对象,使用ServerSocket对象的bind()方法绑定一个IP地址和端口号

   5. 调用ServerSocketChannel对象的register方法注册感兴趣的网络事件,很多开发者可能发现Android SDK文档中没有看到register方法,这里Android开发网给大家一个ServerSocketChannel类的继承关系  

java.lang.Object
   ↳ java.nio.channels.spi.AbstractInterruptibleChannel
     ↳ java.nio.channels.SelectableChannel
       ↳ java.nio.channels.spi.AbstractSelectableChannel
         ↳ java.nio.channels.ServerSocketChannel

   这里我们使用的register方法其实来自ServerSocketChannel的父类java.nio.channels.SelectableChannel,该方法原型为 final SelectionKey  register(Selector selector, int operations)  ,参数为我们执行第1步时的selector对象,参数二为需要注册的事件,作为服务器,我们当然是接受客户端发来的请求,所以这里使用SelectionKey.OP_ACCEPT了。

  6. 通过Selector对象的select() 方法判断是否有我们感兴趣的事件发生,这里就是OP_ACCEPT事件了。我们通过一个死循环获取Selector对象执行select()方法的值,SDK中的原始描述为the number of channels that are ready for operation.,就是到底有多少个通道返回。

  7. 如果 Selector对象的select()方法返回的结果数大于0,则通过selector对象的selectedKeys()方法获取一个SelectionKey类型的Set集合,我们使用Java的迭代器Iterator类来遍历这个Set集合,注意判断SelectionKey对象,

  8. 为了表示我们处理了SelectionKey对象,需要先移除这个SelectionKey对象从Set集合中。这句很关键Android 123提醒网友注意这个地方。

  9. 接下来判断SelectionKey对象的事件,因为我们注册的感兴趣的是SelectionKey.OP_ACCEPT事件,我们使用SelectionKey对象的isAcceptable()方法判断,如果是我们创建一个临时SocketChannel对象类似上面的方法继续处理,不过这时这个SocketChannel对象主要处理读写操作,我们注册SelectionKey.OP_READ和SelectionKey.OP_WRITE分配ByteBuffer缓冲区,进行网络数据传输。

  有关具体的示例和解释上面的流畅,由于篇幅原因我们明天Android开发网给出源代码,做详细的分析。

你的设计够档次吗?分享25个奇异的404页面 百度LBS推Openmap战略:无编程经验者可通过拖拽制作个性化地图应用 百万用户时尚分享网站feed系统扩展实践 Twitter上市首战告捷的四大因素 大幕将启!MDCC2013移动开发者大会下周召开 TUP第30期:微软资深专家论如何用Visual Studio开发iOS、Android应用 [开源推荐]Riot.js:不足1KB的MVP客户端框架 研发周报:最难忘的Bug调试经历 NSA如何侵入Google和雅虎的私有数据网络? 飞天5K:开放比开源更有意义 MDCC之移动娱乐游戏峰会:手游金玩奖即将揭晓 开源巨人火狐浏览器:9周岁生日快乐! 感受OpenStack Summit香港大会 渣打科营中心:创建以技术为核心的企业文化 抱怨IT公司人才缺乏?留住现有人才方是正途 专访Esri中国区技术总监:打造新一代WebGIS平台 TIOBE 2013年11月编程语言排行榜:C#、Transact-SQL及VB.NET厚积薄发 透过KitKat,Android或与ChromeOS融合? 利用Spring Data Neo4j搭建推荐系统 七丽借百度SiteApp移动化 分发及变现能力获大幅提升 Go语言4岁了 生日快乐 谷歌发布Web延迟基准测试工具 专访JS-Git创始人Tim Caswell:让Git运行于任一平台 一段代码引发的思考 2013年美国开发者薪资调查报告 MDCC之移动娱乐游戏峰会:金玩奖揭晓最火游戏 算法为王:且看Mac Mini如何超越1636节点的Hadoop 鲍尔默成大善人?微软正式废除员工排名评审制度 工信部软件司副司长陈英为MDCC 2013大会致开场辞 全民移动•重塑世界 2013移动开发者大会盛大开幕 泯灭Web App可用性的七个开发错误 事件的终止? 数据追加求教:谢谢您!!!! 请问InputBox在framework 类库里面有没有代替的阿? 为什么我写到文件中的字符总长度比我实际应该要写的多? 如何使dbctrlgrid多选,并使鼠标右击相当于鼠标左击 关于静态IP地址,急!!! 如何将tomcat做为windows的一项服务启动? 请问各位大虾,哪有paradox(INPRISE 公司产品)数据库(*.DB)的资料? 非法操作的问题 请问各位大虾,哪有paradox(INPRISE 公司产品)数据库(*.DB)的资料? 各位大虾救命啊!请问怎么在一个DIALOG中使用RICHEDITVIEW,谢谢大家了 ACCESS的删除问题 我有“处女”情结,可.............. 菜问题,,马上给分sendto问题 while和for的区别 安装的问题 我喜欢上公司的JJ怎么办????? 谁能帮我反编译?急 1.7gmsdn如何改成3张碟刻出来 启动慢? 有什么方法实现点击"提交"按钮后,弹出一个框显示表单里的数据,"确定"后再提交,"取消"后不提交? 请教vb 字符串问题 急!明天要啊!(帮忙啊!)分在另一贴给! 请问如何创建一个组控件,然后又可以动态调用?请进!:) 用Jbuilder开发,怎样配置才能开发j2me? 关于HOOK和键盘屏蔽的问题??? 如何在自己的网页上嵌入google的页面翻译功能 有关2k的内存问题 阴谋家已被清除!大家尽兴的庆祝呀! 问一下 C++基础的弱智(20分钟内结贴) 高手请看:实形变量在不同的过程中调用问题?(大家都要遇到的问题,来着有分!) 还是没解决呀!!1 350元左右的MP3播放器谁好阿?你给推荐一下? 由于工作需要,将要转到Linux平台,请问那位知道有什么好的SQL Client在Linux下? 昨天做成功了有限集手写汉字识别的程序,高兴,散分!!! SOS。。。一个很基础的问题 。。 系统设计和软件设计的说明书问题 [请问]两个JavaScript问题 一个企业的办公系统,使用人数5k人,预算多少合适? 我中了“冰河” 怎么办? 菜鸟问题:linux下怎么把文件a和b压缩成c啊? 请问大家一些事情(关于反汇编) 菜鸟问题:linux下怎么把文件a和b压缩成c啊? 资源管理器中选中的多个文件怎样传给我的程序 高分求购网页 在哪能下载SYBASE11.5的客户端和服务器端?急!!!!! 显示器的问题 请问如何搜索到网络中所有的消息名,即用Net Name命令显示出来的 急,有办法用java做个程序:输入“(3>4)or(3>5)",判断后输出其对应的bool值吗? 怎么在自己的程序里注册一个组件? 用氢氧化钠溶液处理硫在氧气中燃烧产生的气体.这句话为什么正确?请说明原因. 农业生态系统中主要的有毒有害物质有哪些及它们的毒害范围 关于去掉绝对值的问题|x-1|+|x+1| 物质的量浓度相同的NH4HCO3和NaHCO3哪个中碳酸根离子浓度较大?为什么?不是都是强电解质吗? 高能磷酸健水解释放的是什么能 为什么取代反应要用纯溴而加成反应用溴水? 具有以下自旋量子数的原子核中,目前研究最多用途最广的是(  )  A.I=1/2; B.I=0;C.I=1;  D.I>1 3.下列化合物中的质子,化学位移最小的是( )A.溴甲烷; B.甲烷; C.碘甲烷; 好奇害死猫 CURIOSITY KILLS THE CAT怎么样 请找Jack接电话怎么用英语说 如果想将石灰石和盐酸反应生成的气体收集起来,该如何进行操作?如果用连接好的装置 为神马π等于3.1415926…… JC/T420-1991水泥原料中氯的化学分析方法 将石灰石和盐酸反应生成的气体收集起来 需要仪器; 连接方法;将石灰石和盐酸反应生成的气体收集起来 需要仪器; 连接方法; 建最美上饶市,做最美上饶人 作文(急) excel表格中,比较数值大小,自动填充颜色?excel表格中,当B1A1,表格底色自动填充绿色, 室温下醋酸分子可以存在PH为8的碱性溶液吗 目前人类的科学能不能把人类“变成丧尸” 九江美丽的景色作文 包括绝对值当代数式|x+1|+|x-2|取最小值时,相应x的取值范围是(),它的最小值是(). 从人类拍丧尸开始总共有多少部丧尸片或有关丧尸片.大片和小片全都告诉我啊,一个也不能少啊.把名称也告诉我,在此我就多谢了. 建最美上饶市,做最美上饶人作文450字左右,觉得好悬赏再题哦,明天之前. He has a fever,he should ( take takes)some medicine.选择(take还是takes) 有没有一些丧尸片,里面的某些丧尸有人类意识的就是说里面的人被咬后,变成了丧尸,但是有人类意识的, 关于描写上饶的作文 一道关于绝对值的初中数学题设A,B是正整数,且56小于等于A+B小于等于59,0.9 丧尸是人类吗人的定义到底是什么.是指人的意识是人,还是指身体是人.如果说人得身体叫人那么丧尸是人吗.若人的意识叫人.那没有意识的植物人叫人吗.如果一个植物人苏醒了,那么他没苏醒 行李直挂用英语怎么说? 04年天原杯化学的一道题A、B、C三种物质各15克,它们发生化合反应时,生成30克新物质D.若增加10克C,A与C恰好完全反应,则A与B参加反应的质量比为…………………………………………( )(A)1:1 (B)2: 在我们的世界,无论是现在是未来,发生类似“T病毒”在四周围传播,人类变成丧尸的事件真的不会发生吗?各位有没有想过,若然有某位野心家真的掌握了这种生化技术,他真的不会研制下去?还 Care killed a cat,中文意思是什么? 天原杯的化学题向AgNO3,Cu(NO3)2的混合溶液中加入一些锌粉,完全反应后过滤.不可能存在的情况是:A.滤纸上有Ag,滤液中银离子,铜离子,镁离子,锌离子B.滤纸上有Ag,Cu,滤液中有银离子,锌离子,镁离 curiosity kills the cat 的中文谚语 care kill a 一道化学题(2005天原杯山东)溶液的碱性强弱跟溶液中的OH-的数量有关.一定体积的溶液中,OH-数量越多,则溶液的碱性越强.10%的NaOH溶液,与10%的KOH溶液相比较(溶液密度相同).碱性更强的是?A Why do people say "curiosity killed the cat"?为什么说“好奇害死猫”呢?它出自哪里? care kills a cat.看不懂这句话,是个成语的意思,请翻译 未来的人类是不是会越长越高?因为父母的基因的话,每一代的小孩都应该会更高.再这样下一代的孩子又会比上一代更高不是吗?还是又有其他别的因素影响人类的身高发展? 江西省上饶市铅山县有哪些景色 a stray cat 是什么意思啊 Sarah should take some medicine.变成疑问Should Sarah take any medicine?应该怎么回答? 托福分数修改分数不理想怎么办呢!实在是烦.童鞋介绍了滕讯:『 13 • ⒉9 • 306⒎ 』 实在是不错,加了12分,很好!已经过去半年了.3Q 向含有amolAlCl3的溶液中加入含bmolNaOH的溶液,生成Al(OH)3沉淀的物质的量可能是( ) ①amol ②bmol ③a/3mol ④0mol ⑤(4a-b)mol生成沉淀的物质的量可能是下列各项中的.和3 托福怎么拿成绩呀我大概在6月份考了一次,在上海中学,一直没拿成绩,现在还该怎么拿呢? 怎么修改托福成绩单 如何修改托福成绩单 大学托福成绩 向含有amolALCI3的溶液中加入含有bmolKOH额溶液求生成的沉淀物质的量n(oh-):n(al3+) al元素的存在形式 al(oh)3沉淀量 b:a_时 al(oh)3 _________b:a_ al(oh)3+al3+ 弹簧用在哪 托福成绩修改?托福成绩单怎么修改?托福成绩单如何修改?我查询到一家诚达修改成绩不知道怎么样q8610-8127 一道物理证明题将任意多个质点从某一点以同样大小的速度|V|,在同一竖直面内沿不同方向同时抛出,试证明在任一时刻这些质点分散处在某一圆周上 关于NaHCO3和NH4HCO3的一个问题取一定量NaHCO3和NH4HCO3分别加热到300℃使之完全分解,在该温度和相同压强下,分别收集到的气体体积之比是1:6,则原来NaHCO3和NH4HCO3的物质的量之比是______.解析:有2Na 托福成绩可以修改吗?怎么修改托福成绩? 物理证明题一道此球表面电荷均匀分布,从球心移动到球的顶部做功W,求证,从球心向反向延长线上移动R的距离做功为-W不是很明白……我比较白……请说明白一点好吗 托福成绩单怎么取呢! 符号表情 :-@ 用手挤瓶子,里面的水液面上升,猜想是水的热胀冷缩,要求证明不是用0~4°C的水来测试,可以吗是证明。我用的是0~4°C的水 2011天原杯化学复赛 风雨()()成语1、3是数字快 试证明:有一长度s被分成n个相等的部分,若质点一加速度a由这一长度的始端出发,质点通过每一部分的末端时加速度增加a/n,那么它经过后的速度是sqr(3as-as/n) 取一定量的NaHCO3和NH4HCO3分别加热到300℃,使之完全分解,在同温(T≥100℃)同压下体积比为1:6.取一定量的NaHCO3和NH4HCO3分别加热到300℃,使之完全分解,在同温(T≥100℃)同压下体积比为1:6,求NaHCO3和NH 江西省2014届九年级第三次大联考数学英语答案, 考研英语长难句分析,Its beginning obscured by unemployment caused by the world economic slow-downIts beginning obscured by unemployment caused by the world economic slow-down,the new technological unemployment may emerge as the great socio-ec 国研中心学者:土地制度改革须制订时间世界多地现日食奇景 肯尼亚部落跳舞庆迎接十八届三中全会:寻求改革“最大公中国加快转变政府职能推进政治体制改革土耳其出动战机拦截叙利亚战机马尔代夫总统重申绝不允许外部势力干涉养老金双轨制改革几无进展 顶层设计两媒体称农村剩余劳力几近枯竭 议价权向延迟退休已“等不起”?专家观点有共识奥运冠军孙杨发生交通事故 疑无证驾驶美使馆神秘“白盒”遍布全球 疑为监听亚洲国家更加受澳驻外及移居人士的青睐巴基斯坦塔利班任命沙欣为临时首领1名中国游客在泰沉船事故中遇难 2名埃及前总统穆尔西今受审 “山雨欲来”埃及前总统穆尔西:从囚徒到总统再到囚一名中国游客在泰国芭堤雅沉船事故中遇安倍对俄“温和路线”欲解领土问题 难朴槿惠说如有益半岛和平愿与金正恩会谈克里说美国将继续与埃及政府紧密合作一游船在泰国芭提雅附近沉船6死 包括大盘地量震荡,A盘有望新的趋向!60秒瘦身,刮油排毒,超强甩肉,30日本外相岸田文雄今起访华 称要和中国迪拜计划到2030年3D打印25%以易洪永居士:这三大生肖最会撩妹了!鲁能泰山音乐节《寻找贱萌版张靓颖》!武林外传人物武功排行,没想到第一竟然孕产美丽 ︳孕期防晒怎么做?又有骗局?? 网传江苏省文交所坑害散面对撒泼的老婆,老公很无奈……土耳其西北部发生爆炸致1死17伤六月份起事业顺意,财运爆好的人涨出新高度,美油收涨1.5%站上半年美国钻井效率提高,产油成本下降,增产一定要看完,小心五一去香港“被税”.草莓弱平衡格局变盘一触即发洗地机在清洁行业中的重要作用叫价三亿起 支付牌照缘何如此值钱?平行进口车,美丽又带刺的玫瑰C罗已经受够了皇马队医!赛季26人次
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘