作家
登录

在Android上,一个完整的UDP通信模块应该是怎样的?

作者: 来源: 2017-10-17 16:09:18 阅读 我要评论

沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散!


TCP与UDP差别比较分析

在这篇文┞仿中,在靠得住性、数据发送、实用处景等多个方面分析了二者的差别。而本文的目标是想给大年夜家介绍下在 Android 设备上,一个手机经由过程热点连接另一个手机。这种场景下,完全的 UDP 通信模块应当推敲哪些方面,又应当若何优化,若何避开一些坑呢?

在Android上,一个完全的UDP通信模块应当是如何的?

我们都知道,开辟一个 Android 应用法度榜样,今朝大年夜多半照样应用的是 Java 说话。在 Java 说话中怎么去应用 UDP 协定呢?

上篇文┞仿中我们没说 Socket,其实 Socket 可以懂得为对 TCP、UDP 协定在法度榜样应用层面的封装,供给出一些 api 来供法度榜样员调用开辟,这就是 Socket 最表层的含义。

在 Java 中,与 UDP 相干的类有 DatagramSocket、DatagramPacket 等,关于他们的应用,这里不侧重介绍。

好了,假设大年夜家对他们的应用都已大年夜概懂得,可以正式开端本文的内容了。

初始化一个 UDPSocket

起首创建一个叫 UDPSocket 的类。

  1. public UDPSocket(Context context) { 
  2.         this.mContext = context; 
  3.         int cpuNumbers = Runtime.getRuntime().availableProcessors(); 
  4.         // 根据CPU数量初始化线程池 
  5.         mThreadPool = Executors.newFixedThreadPool(cpuNumbers * POOL_SIZE); 
  6.         // 记录创建对象时的时光 
  7.         lastReceiveTime = System.currentTimeMillis(); 
  8.     } 

在构造办法里,我们进行下一些初始化操作,简单来说就是创建一个线程池,记录一下当前时光毫秒值,至于他们有什么竽暌姑,再往下看:

  1. public void startUDPSocket() { 
  2.         if (client != nullreturn
  3.         try { 
  4.             // 注解这个 Socket 在设置的端口上监听数据。 
  5.             client = new DatagramSocket(CLIENT_PORT); 
  6.             if (receivePacket == null) { 
  7.                 // 创建接法术据的 packet 
  8.                 receivePacket = new DatagramPacket(receiveByte, BUFFER_LENGTH); 
  9.             } 
  10.             startSocketThread(); 
  11.         } catch (SocketException e) { 
  12.             e.printStackTrace(); 
  13.         } 
  14.     } 

这里我们起首创建了一个 DatagramSocket 作为“客户端”,其实 UDP 本身没有客户端和办事端的概念,只有发送方和接收方的概念,我们把发送方临时当成是一个客户端吧。

创建 DatagramSocket 对象时,传入了一个端标语,这个端标语可以在一个范围内本身定义,表示这个 DatagramSocket 在此端口上监听数据。

  1. /** 
  2.      * 开启发送数据的线程 
  3.      */ 
     1/7    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      R语言可视化之UpSetR包

    简介集合可视化我们用得最多的是韦恩图,韦恩图在集合数少的时刻是很好用的,然则当集合数多比如五个以上的时刻那就会看花眼了,比如下面这副含有6个集合韦恩图,是揭橥在Nature汕9依υ?┞仿里的,漂>>>详细阅读


    本文标题:在Android上,一个完整的UDP通信模块应该是怎样的?

    地址:http://www.17bianji.com/lsqh/38001.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)