为了账号安全,请及时绑定邮箱和手机立即绑定

见证Android消息推送时刻

难度高级
时长 8小时37分
学习人数
综合评分9.83
36人评价 查看评价
9.9 内容实用
10.0 简洁易懂
9.6 逻辑清晰
  • Mina 简单开发四部曲 1.创建NioSocketAcceptor对象 NioSocketAcceptor nsa = new NioSocketAcceptor() 2.设置自己的消息处理器 nsa.setHandler(new MyServerHandler) 3.配置处理消息转换的拦截器 nsa.getFilterChain().addLast("codec",new ProtocolCodeFilter(new TextLineCodeFactory()) 4.绑定端口,开启服务 nsa.bind(new InetSocketAddress(9898)) Mina 同时提供了网络通信的Server 端、Client 端的封装,无论是哪端,Mina 在整个网通通信结构中都处于如下的位置:可见Mina 的API 将真正的网络通信与我们的应用程序隔离开来,你只需要关心你要发送、接收的数据以及你的业务逻辑即可。同样的,无论是哪端,Mina 的执行流程如下所示: (1.) IoService:这个接口在一个线程上负责套接字的建立,拥有自己的Selector,监听是否有连接被建立。 (2.) IoProcessor:这个接口在另一个线程上,负责检查是否有数据在通道上读写,也就是说它也拥有自己的Selector,这是与我们使用JAVA NIO 编码时的一个不同之处,通常在JAVA NIO 编码中,我们都是使用一个Selector,也就是不区分IoService与IoProcessor 两个功能接口。另外,IoProcessor 负责调用注册在IoService 上的过滤器,并在过滤器链之后调用IoHandler。 (3.) IoFilter:这个接口定义一组拦截器,这些拦截器可以包括日志输出、黑名单过滤、数据的编码(write 方向)与解码(read 方向)等功能,其中数据的encode 与decode是最为重要的、也是你在使用Mina 时最主要关注的地方。 (4.) IoHandler:这个接口负责编写业务逻辑,也就是接收、发送数据的地方。
    查看全部
    2 采集 收起 来源:Mina初体验

    2018-03-22

  • 长连接:是指客户端和服务器之间始终建立着一个通信连接,在连接没有中断之前,客户端和服务器端之间可以随时进行通信。如socket协议,即时通讯,推送原理。 短连接:是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接。如http协议。
    查看全部
    6 采集 收起 来源:郭郭叨逼叨

    2014-12-08

  • 老师讲的有着点很好,特别是针对通信机制的一些问题
    查看全部
    0 采集 收起 来源:XMPP我知道

    2014-12-06

  • IQ结构
    查看全部
    0 采集 收起 来源:XMPP的Stanzas

    2014-12-02

  • message结构
    查看全部
    0 采集 收起 来源:XMPP的Stanzas

    2015-02-15

  • presence结构(二)
    查看全部
    1 采集 收起 来源:XMPP的Stanzas

    2015-02-15

  • presence结构
    查看全部
    0 采集 收起 来源:XMPP的Stanzas

    2015-02-15

  • XML Stanza通用属性
    查看全部
    0 采集 收起 来源:XMPP的Stanzas

    2015-02-15

  • XMPP的身份标识
    查看全部
    0 采集 收起 来源:XMPP的Stanzas

    2015-02-15

  • XMPP基础知识
    查看全部
    1 采集 收起 来源:XMPP我知道

    2015-02-15

  • 什么事XMPP协议
    查看全部
    0 采集 收起 来源:XMPP我知道

    2014-12-02

  • server->client: server: writer=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); while((receiveMsg=reader.readLine())!=null){ System.out.println(receiveMsg); writer.write("server reply"+receiveMsg+"\n"); writer.flush(); } client: reader=new BufferedReader(new InputStreamReader(socket.getInputStream())); while(!(inputContent=inputReader.readLine()).equals("bye")){ writer.write(inputContent+"\n");//一定要加\n writer.flush(); String res=reader.readLine(); System.out.println(res); }
    查看全部
  • server: public void startServer() { ServerSocket serverSocket; BufferedReader reader; try { serverSocket=new ServerSocket(6898); System.out.println("server started..."); Socket socket = serverSocket.accept(); System.out.println("client "+socket.hashCode()+"connected"); reader=new BufferedReader(new InputStreamReader(socket.getInputStream())); String receiveMsg; while((receiveMsg=reader.readLine())!=null){ System.out.println(receiveMsg); } } catch (Exception e) { e.printStackTrace(); } } }
    查看全部
  • client: private void start() { BufferedReader inputReader = null; Socket socket = null; BufferedWriter writer = null; try { socket=new Socket("localhost",6898); inputReader=new BufferedReader(new InputStreamReader(System.in)); writer=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); String inputContent; while(!(inputContent=inputReader.readLine()).equals("bye")){ writer.write(inputContent+"\n");//一定要加\n writer.flush(); } } catch (IOException e) { e.printStackTrace(); }finally{ try { inputReader.close(); socket.close(); writer.close(); } catch (IOException e) { e.printStackTrace(); } } } }
    查看全部
  • socketServer.java: public class SocketServer { /** * @param args */ public static void main(String[] args) { SocketServer socketServer=new SocketServer(); socketServer.startServer(); } public void startServer() { ServerSocket serverSocket; BufferedReader reader; try { serverSocket=new ServerSocket(6898); Socket socket = serverSocket.accept(); reader=new BufferedReader(new InputStreamReader(socket.getInputStream())); String receiveMsg; while((receiveMsg=reader.readLine())!=null){ System.out.println(receiveMsg); } } catch (Exception e) { e.printStackTrace(); } } }
    查看全部

举报

0/150
提交
取消
课程须知
本课程属于程序开发高级课程,对学习者的要求较高。首先必须对Java十分熟练,这是最基本的要求。其次要有一定的Android基础,基础不够扎实的朋友可以参考《第一行代码—Android》这本书。有Java服务器端的开发经验则更佳,这会让你可以更加轻松地学会本课程的所有内容
老师告诉你能学到什么?
通过本课程,你将学到: 1、掌握推送的基本原理和极光推送的用法 2、掌握Socket和Mina框架的用法 3、了解XMPP协议 4、掌握aSmack库的用法 5、掌握AndroidPN开源框架的用法

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!