作家
登录

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

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

  •     private void startSocketThread() { 
  •         clientThread = new Thread(new Runnable() { 
  •             @Override 
  •             public void run() { 
  •                 Log.d(TAG, "clientThread is running..."); 
  •                 receiveMessage(); 
  •             } 
  •         }); 
  •         isThreadRunning = true
  •         clientThread.start(); 
  •         startHeartbeatTimer(); 
  •     } 
  • 起首 clientThread 线程的目标是调用 DatagramSocket receive 办法,因为 receive 办法是浊宣的,不克不及放在主线程,所以天然开启一个子线程了。receiveMessage 就是处理接收到的 UDP 数捷报,我们先不看接法术据的┞封个办法,毕竟还没人发消息呢,天然就谈不上收了。

    心跳包保持“长连接”

    来到本文的第一个重点,我们都知道 UDP 本身没有连接的概念。在 Android 端应用 UDP 和 TCP 的场景是一个手机连接另一个手机的热点,二者处在同一局域网中。在二者并不知道对方的存在时,怎么才能发明彼此呢?

    经由过程心跳包的方法,两边都每隔一段时光发一个 UDP 包,如不雅对方接收到了,那就能知道对方的 ip,建立起通信了。

    1. private static final long TIME_OUT = 120 * 1000; 
    2.     private static final long HEARTBEAT_MESSAGE_DURATION = 10 * 1000; 
    3.     /** 
    4.      * 启动心跳,timer 距离十秒 
    5.      */ 
    6.     private void startHeartbeatTimer() { 
    7.         timer = new HeartbeatTimer(); 
    8.         timer.setOnScheduleListener(new HeartbeatTimer.OnScheduleListener() { 
    9.             @Override 
    10.             public void onSchedule() { 
    11.                 Log.d(TAG, "timer is onSchedule..."); 
    12.                 long duration = System.currentTimeMillis() - lastReceiveTime; 
    13.                 Log.d(TAG, "duration:" + duration); 
    14.                 if (duration > TIME_OUT) {//若跨越两分钟都充公到我的心跳包,则认为对方不在线。 
    15.                     Log.d(TAG, "超时,对方已经下线"); 
    16.                     // 刷新时光,从新进入下一?心跳周期 
    17.                     lastReceiveTime = System.currentTimeMillis(); 

        推荐阅读

        R语言可视化之UpSetR包

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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