cocos2dx 3.x 网络循环接收数据(RakNet::Packet* packet)单步网络接收
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)单步网络接收的更多相关文章
- 从网络获取json数据,使用imageloader获取网络图片资源并显示在ListView上
http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0 这是一个接口,通过这个接口来获取数据并解析 大体上就是把解析的数据还有图片u ...
- 关于原子哥ENC28J60网络通信模块接收数据代码的一点疑惑
---恢复内容开始--- 这几天做STM32的ENC28J60网络通信模块,自己在原子哥的代码上进行修改测试,,发现一个问题,电脑和板子进行通信的时候总隔一段时间板子就死机了. 使用自己的就不会死机, ...
- linux内核网络接收数据流程图【转】
转自:http://blog.chinaunix.net/uid-23069658-id-3141409.html 4.3 数据接收流程图 各层主要函数以及位置功能说明: 1)s ...
- 31.用python中的serial向串口发送和接收数据(案例一)
代码功能说明:1.向串口助手发送十六进制数据:0X01,0X03,0X00,0X00,0X00,0X01,0X84,0X0A: 2.用串口助手向代码发送数据,并将发送过来的数据保存在数据库中,按数据和 ...
- STM32 串口USART DMA方式发送接收数据
硬件:stm32f103cbt6 软件:STM32F10x_StdPeriph_Lib_V3.5.0 文章目录 头文件 USART3_DR的地址 DMA的通道 DMA的中断 USART接收回调函数 头 ...
- iOS开发网络篇—JSON数据的解析
iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...
- 2018最新mfc作为上位机接收硬件端USB或串口数据显示成图片 解决串口接收数据丢字节丢包问题
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9490616.html 本文用的是VS2013MFC写串口数据接收: 第一步:首先建立一个MFC ...
- Linux/windows com串口 java 接收数据 并解析 web程序
1.首先应公司要求再 com 口本来使用 .net 由于 .net 适用 linux 太麻烦 改为java 准备工作 准备 RXTXconmm.jar(版本很重要) 因为版本问题我搞了一天. 主要讲述 ...
- 灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据
灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据 目录: 1.MM32F0010UART简介 2.MM32F0010UART特性 3.MM32F0010使用 ...
随机推荐
- JS BOM DOM对象 select联动 计时器 时间 css操作 节点(标签 ) 查找标签 {前端基础之BOM和DOM}
前端基础之BOM和DOM 前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我 ...
- Oracle DBLINK 简单使用
oracle在进行跨库访问时,可以通过创建dblink实现,今天就简单的介绍下如果创建dblink,以及通过dblink完成插入.修改.删除等操作 首先了解下环境:在tnsnames.ora中配置两个 ...
- 开启spark日志聚集功能
spark监控应用方式: 1)在运行过程中可以通过web Ui:4040端口进行监控 2)任务运行完成想要监控spark,需要启动日志聚集功能 开启日志聚集功能方法: 编辑conf/spark-env ...
- gfs故障恢复
GlusterFS更换故障Brick tanzhenchao关注0人评论3918人阅读2017-03-21 09:53:18 1 前言 笔者公司内有一套GlusterFS分布式存储,最近数据分区的 ...
- Python不使用int()函数把字符串转换为数字
Python不使用int()函数把字符串转换为数字 2018年05月21日 14:18:45 边缘ob边缘ob 阅读数:1035 https://blog.csdn.net/qq_33192555/a ...
- 内部排序->其它->地址排序(地址重排算法)
文字描述 当每个记录所占空间较多,即每个记录存放的除关键字外的附加信息太大时,移动记录的时间耗费太大.此时,就可以像表插入排序.链式基数排序,以修改指针代替移动记录.但是有的排序方法,如快速排序和堆排 ...
- 知乎改版api接口之scrapy自动登陆
最近使用scrapy模拟登陆知乎,发现所有接口都发生变化了,包括验证码也发生了很大变化,通过抓包分析,记录下改版后的知乎模拟登陆,废话不多说,直接上代码,亲测有效 # -*- coding: utf- ...
- SSH的通讯和认证
SSH的通讯和认证 转自:http://blog.sina.com.cn/s/blog_4e9440910100zxk0.html 之前一直对SSH的认证模棱两可,今天对SSH的通讯,认证和配置有了进 ...
- java 网络编程(一)InetAddress
package cn.sasa.net; import java.net.InetAddress; import java.net.UnknownHostException; public class ...
- 【PyQt5-Qt Designer】文本框读写操作
主要内容: 1.读.写 输入控件(Input Widgets)中的内容(str) 2.保存数据到txt文件 3.从txt文件中读内容,与输入控件中内容比较 将上述各种输入控件(Input Widget ...