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. JS BOM DOM对象 select联动 计时器 时间 css操作 节点(标签 ) 查找标签 {前端基础之BOM和DOM}

    前端基础之BOM和DOM 前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我 ...

  2. Oracle DBLINK 简单使用

    oracle在进行跨库访问时,可以通过创建dblink实现,今天就简单的介绍下如果创建dblink,以及通过dblink完成插入.修改.删除等操作 首先了解下环境:在tnsnames.ora中配置两个 ...

  3. 开启spark日志聚集功能

    spark监控应用方式: 1)在运行过程中可以通过web Ui:4040端口进行监控 2)任务运行完成想要监控spark,需要启动日志聚集功能 开启日志聚集功能方法: 编辑conf/spark-env ...

  4. gfs故障恢复

    GlusterFS更换故障Brick tanzhenchao关注0人评论3918人阅读2017-03-21 09:53:18   1 前言 笔者公司内有一套GlusterFS分布式存储,最近数据分区的 ...

  5. Python不使用int()函数把字符串转换为数字

    Python不使用int()函数把字符串转换为数字 2018年05月21日 14:18:45 边缘ob边缘ob 阅读数:1035 https://blog.csdn.net/qq_33192555/a ...

  6. 内部排序->其它->地址排序(地址重排算法)

    文字描述 当每个记录所占空间较多,即每个记录存放的除关键字外的附加信息太大时,移动记录的时间耗费太大.此时,就可以像表插入排序.链式基数排序,以修改指针代替移动记录.但是有的排序方法,如快速排序和堆排 ...

  7. 知乎改版api接口之scrapy自动登陆

    最近使用scrapy模拟登陆知乎,发现所有接口都发生变化了,包括验证码也发生了很大变化,通过抓包分析,记录下改版后的知乎模拟登陆,废话不多说,直接上代码,亲测有效 # -*- coding: utf- ...

  8. SSH的通讯和认证

    SSH的通讯和认证 转自:http://blog.sina.com.cn/s/blog_4e9440910100zxk0.html 之前一直对SSH的认证模棱两可,今天对SSH的通讯,认证和配置有了进 ...

  9. java 网络编程(一)InetAddress

    package cn.sasa.net; import java.net.InetAddress; import java.net.UnknownHostException; public class ...

  10. 【PyQt5-Qt Designer】文本框读写操作

    主要内容: 1.读.写 输入控件(Input Widgets)中的内容(str) 2.保存数据到txt文件 3.从txt文件中读内容,与输入控件中内容比较 将上述各种输入控件(Input Widget ...