zoukankan      html  css  js  c++  java
  • unity探索者之socket传输protobuf字节流(四)

    版权声明:本文为原创文章,转载请声明http://www.cnblogs.com/unityExplorer/p/7027659.html 

    上篇已经把socket的传输说的差不多了,这篇主要是说说断线重连,没什么好说的,直接上代码吧

     1     //断线重连功能我是用的协程,不建议用线程去重连,因为大多数时候,重连是需要告诉用户的,使用线程会导致显示很麻烦
     2     int reconnectTime = 0;//重连次数   
     3     IEnumerator Reconnect()
     4     {
     5         //关闭socket,上一篇中有定义
     6         Close();
     7         reconnectTime++;
     8         bool isSuccess = false;
     9         //重新初始化socket,获取初始化结果
    10         isSuccess = Init();
    11         if (!isSuccess)
    12         {
    13             //重连次数小于3次,则再次尝试重连
    14             //超过3次,基本可以确定网络已经断开了
    15             if (reconnectTime < 3)
    16             {
    17                 yield return new WaitForSecondsRealtime(5);
    18                 StartCoroutine(Reconnect());
    19             }
    20             else
    21                 Debug.Log("网络错误");
    22         }
    23         else
    24         {
    25             reconnectTime = 0;
    26             //创建一个临时List,存放未发送出去的消息
    27             List<byte[]> lb = new List<byte[]>();
    28             lb.AddRange(sendList);
    29             //清空原有消息集合,加入登录请求后,再加入未发送的消息
    30             sendList.Clear();
    31             //重新登录,AddSendMessageQueue上一篇中已定义
    32             AddSendMessageQueue("登录的protobuf对象", "登录的消息id");
    33             sendList.AddRange(lb);
    34         }                
    由于环境不同关系,并非所有的博客内容都会上传完整的源码,大部分的源码,大家可以到我的github主页上的UGCFramework查找

    传送门:https://github.com/wulonghao/UGCFramework
  • 相关阅读:
    OS__信号量(semaphore)PV操作
    c++ _宏与内联函数
    ubuntu_ root change to user
    联想Y450在Ubuntu下调节屏幕亮度
    AI—家庭组机器人平台环境配置,高级人工智能实验总结
    如何在ubuntu下使用windows下的程序(eg: .exe)
    Python_XML的三种解析方法
    Python学习资源汇总
    转:Emmet 学习之路
    sql入门
  • 原文地址:https://www.cnblogs.com/unityExplorer/p/7027659.html
Copyright © 2011-2022 走看看