void FriendFightLayer::update(float dt)

 {

     dealWithPacket(dt);

     if (m_isNeedSwitchToLobby) {

         PublicMethod::changeToLobby();

     }

 }

 void FriendFightLayer::dealWithPacket(float dt)

 {

     RakNet::Packet* packet = g_net.getNewPacket();

     if (packet == NULL) {

         return;//return之后下面的代码就不执行了,所以除了协议以外的东西,就不能写在里面了。

     }

 //  为什么说是单步呢?看看for循环的条件就知道了,因为有数据进来就进for就会一直取到NULL才会停止

 //    for( RakNet::Packet* packet = g_net.getNewPacket(); packet != NULL; packet = g_net.getNewPacket())

 //    {

         if( packet->data[] == ID_REMOTE_DISCONNECTION_NOTIFICATION)

         {

             CCLOG("远端连接丢失");

             m_isNeedSwitchToLobby = true;

             g_net.releasePacket(packet);

         }

         else if( packet->data[] == ID_REMOTE_CONNECTION_LOST)

         {

             CCLOG("远端连接丢失");

             m_isNeedSwitchToLobby = true;

             g_net.releasePacket(packet);

         }

         else if( packet->data[] == ID_REMOTE_NEW_INCOMING_CONNECTION)

         {

             CCLOG("新连接进入");

             g_net.releasePacket(packet);

         }

         else if( packet->data[] == ID_NEW_INCOMING_CONNECTION)

         {

             CCLOG("新连接进入");

             g_net.releasePacket(packet);

         }

         else if( packet->data[] == ID_NO_FREE_INCOMING_CONNECTIONS)

         {

             CCLOG("服务器已满");

             m_isNeedSwitchToLobby = true;

             g_net.releasePacket(packet);

         }

         else if( packet->data[] == ID_DISCONNECTION_NOTIFICATION)

         {

             CCLOG("掉线");

             m_isNeedSwitchToLobby = true;

             g_net.releasePacket(packet);

         }

         else if( packet->data[] == ID_CONNECTION_LOST)

         {

             CCLOG("连接丢失");

             m_isNeedSwitchToLobby = true;

             g_net.releasePacket(packet);

         }

         else if (packet->data[] == ID_CONNECTION_ATTEMPT_FAILED)

         {

             CCLOG("尝试连接失败");

             PlatformHelper::showHint("无法连接服务器");

             MahJong_Foure_Main::s_returnToLobby = true;

             m_isNeedSwitchToLobby = true;

             g_net.releasePacket(packet);

         }

         else if( packet->data[] == ID_CONNECTION_REQUEST_ACCEPTED)

         {

             g_net.m_mahJongFourServerAddress = packet->systemAddress;

             CCLOG("连接游戏服务器成功");

             g_net.releasePacket(packet);

 //            RakNet::BitStream configRequest;

 //            configRequest.Write((RakNet::MessageID)ID_GET_CONFIG);

 //            g_net.getPeer()->Send(&configRequest, MEDIUM_PRIORITY, RELIABLE, 0, g_net.getServerAddress(), false);

             RakNet::BitStream loginRequest;

             loginRequest.Write((RakNet::MessageID)ID_LOGIN_FROM_CLIENT);//从客户端发送登陆信息

             loginRequest.Write(DataManager::getInstance()->m_myData.m_id);

             loginRequest.Write(m_sessionID);

             loginRequest.Write(m_gameTimes);

             loginRequest.Write(ConfigData::getInstance()->nProxy);

             g_net.getPeer()->Send(&loginRequest, MEDIUM_PRIORITY, RELIABLE, , g_net.getServerAddress(), false);

         }

         else if (packet->data[] == ID_GET_CONFIG)

         {

             dealWithGetConfig(packet);

         }

 #pragma mark - 123

 //        else if(packet->data[0] == ID_PLAYER_LOGIN)

 //        {

 ////            LandLordsScene* loadingLayer = LandLordsScene::create();

 //            CCLOG("ID_PLAYER_LOGIN123456");

 //        }

         else if (packet->data[] == ID_TABLE_LOGIN)

         {

             CCLOG("有玩家进入房间);

         }

         else if (packet->data[] == ID_LOGIN_TO_GAME)

         {

             dealWithLoginToGame(packet);

         }

         else if(packet->data[] == ID_LOGIN_FROM_CLIENT)

         {

             CCLOG("登录游戏服务器成功");

             dealWithLoginFromClient(packet);

         }

 //        else if(packet->data[0] == ID_VIP_SCORE)

 //        {

         else if(packet->data[] == ID_VIP_SCORE)

         {

             RakNet::BitStream vipScoreResult( packet->data, packet->length, false);

             vipScoreResult.IgnoreBytes( sizeof(RakNet::MessageID));

             RakNet::MessageID realPacketID;

             vipScoreResult.Read(realPacketID);

             switch (realPacketID) {

                 case SVIP_ID_PULLRECORDLIST:

                     dealWithRecordList(vipScoreResult);

                     break;

                 case SVIP_ID_CREATETABLE:

                     dealWithCreateTable(vipScoreResult);

                     break;

                 case SVIP_ID_JOINTABLE:

                     dealWithJoinTable(vipScoreResult);

 //                    if(m_selectedName == "landlords")

 //                    {

 //                        return;

 //                    }

 //                    else

 //                    {

                         break;

 //                    }

                 case SVIP_ID_EXCHANGE:

                     CCLOG("SVIP_ID_EXCHANGE:%d",SVIP_ID_EXCHANGE);

                     dealWithExchange(vipScoreResult);

                     break;

                 case SVIP_ID_PULLRECORD:

                     dealWithRecord(vipScoreResult);

                     break;

 //                case SVIP_ID_DISMISSTABLE_RESULT://解散桌子

 //                     CCLOG("解散桌子SVIP_ID_DISMISSTABLE_RESULT");

 //                    break;

                 default:

                     break;

             }

             g_net.releasePacket(packet);

         }

         else

         {

             CCLOG("未知数据报:%d",packet->data[]);

         }

   //  }

 }

cocos2dx 3.x 网络循环接收数据(RakNet::Packet* packet)单步网络接收的更多相关文章

  1. 从网络获取json数据,使用imageloader获取网络图片资源并显示在ListView上

    http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0 这是一个接口,通过这个接口来获取数据并解析 大体上就是把解析的数据还有图片u ...

  2. 关于原子哥ENC28J60网络通信模块接收数据代码的一点疑惑

    ---恢复内容开始--- 这几天做STM32的ENC28J60网络通信模块,自己在原子哥的代码上进行修改测试,,发现一个问题,电脑和板子进行通信的时候总隔一段时间板子就死机了. 使用自己的就不会死机, ...

  3. linux内核网络接收数据流程图【转】

    转自:http://blog.chinaunix.net/uid-23069658-id-3141409.html 4.3 数据接收流程图   各层主要函数以及位置功能说明:          1)s ...

  4. 31.用python中的serial向串口发送和接收数据(案例一)

    代码功能说明:1.向串口助手发送十六进制数据:0X01,0X03,0X00,0X00,0X00,0X01,0X84,0X0A: 2.用串口助手向代码发送数据,并将发送过来的数据保存在数据库中,按数据和 ...

  5. STM32 串口USART DMA方式发送接收数据

    硬件:stm32f103cbt6 软件:STM32F10x_StdPeriph_Lib_V3.5.0 文章目录 头文件 USART3_DR的地址 DMA的通道 DMA的中断 USART接收回调函数 头 ...

  6. iOS开发网络篇—JSON数据的解析

    iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...

  7. 2018最新mfc作为上位机接收硬件端USB或串口数据显示成图片 解决串口接收数据丢字节丢包问题

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9490616.html 本文用的是VS2013MFC写串口数据接收: 第一步:首先建立一个MFC ...

  8. Linux/windows com串口 java 接收数据 并解析 web程序

    1.首先应公司要求再 com 口本来使用 .net 由于 .net 适用 linux 太麻烦 改为java 准备工作 准备 RXTXconmm.jar(版本很重要) 因为版本问题我搞了一天. 主要讲述 ...

  9. 灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据

    灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据 目录: 1.MM32F0010UART简介 2.MM32F0010UART特性 3.MM32F0010使用 ...

随机推荐

  1. 基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署

    最近在学习如何用 Docker 部署生产环境中的 ASP.NET Core 站点,作为一个 Docer 新手,从何处下手更容易入门呢?一开始就手写 Docker 配置文件(Docfile, docke ...

  2. 汇编debug工具详解

    关于debug工具里的各个指令的用法 debug调试工具详解: r:可以查看,和改变寄存器中的内容具体用法:·直接输入r的时候,回车显示当前指向内存单元中所有寄存器中的内容,并将所指机器码翻译成汇编指 ...

  3. Java元组Tuple介绍与使用

    一.元组介绍 仅仅一次方法调用就可以返回多个对象,你应该经常需要这样的功能吧.可以return语句只允许返回单个对(可能有人说返回一个集合就可以了,请记住,一个集合也只是一个对象而已)因此,解决办法就 ...

  4. python字符串常用方法

    #1.strip()去掉空格(字符串首.尾空格).lstrip()去掉左侧空格.rstrip()去掉右侧空格print(' abc '.lstrip())#>>abcprint(' abc ...

  5. windows hook 钩子

    windows  hook  钩子 场景: 1.打印机 Ctrl+P弹出支付窗口,付款成功后打印

  6. cocos2dx 粒子系统

    参考文献: 1.http://blog.csdn.net/aa4790139/article/details/8126525 2.https://code.google.com/p/cocos2d-w ...

  7. DateTimePicker用法

    将DateTimePicker的Format属性中加入日期格式设成 'yyyy-MM-dd HH:mm',注意大小写 , 将kind设置为dtkTime即可,可以在每次Form onShow时将Dat ...

  8. 《Redis 垃圾回收》

    推荐一首歌 - <纸短情长> 花粥 很好听 一:redis的垃圾回收 - 为了可以使用更多的内存,redis有一套自己的键值淘汰机制. - 修改 maxmemory参数,限制Redis使用 ...

  9. 《Nginx - 指令》- Rewrite/If/Set

    一:Rewrite - 概述 - flag 作用 - last / break 实现对 Url 的重写. - redirect / permanent 实现对 Url 的重定向. - 使用范围 - s ...

  10. java之旅_高级教程_java泛型

    摘自:http://www.runoob.com/java/java-generics.html JAVA泛型 java泛型(generics)是JDK5中引入的新特性,泛型提供了编译时类型安全检测机 ...