当前位置: 首页 > news >正文

unity学习(19)——客户端与服务器合力完成注册功能(1)入门准备

逆向服务器用了三天的时间,但此时觉得一切都值,又可以继续学习了。

服务器中登录请求和注册请求由command变量进行区分,上一层的type变量都是login。

public void process(Session session, SocketModel model)
{switch (model.Command){case 0:this.login(session, model);break;case 2:this.reg(session, model);break;}
}

从注册入手!视频对应的应该是第七讲。

点击注册按钮,输入账号密码,实测可以在服务器收到编码后的字符串,但此时有个问题就是只有点击登录按钮后,客户端才会连接服务器,上来直接点击“注册”再“确定”是收不到任何东西的。

现在这些都简单了,新发现是vs可以自动分别打开两个不同的项目,登录按钮绑定的函数如下。

然后发现,LoginClick()和RegistClick()中基本大同小异,说明建立连接的不是LoginClick()。而是因为“登录”按钮绑了Canvas,Canvas中是有网络初始化脚本的。所以最简单的办法就是给登录界面右边的“注册”按钮也绑上Canvas。实测此时确实可以直接注册

然后最自然的想法就是看看账号密码存在哪里了!加个位数限制,16位之内,防溢出,至于字符限制,暂时不用考虑。

public void reg(Session session, SocketModel model)
{Console.WriteLine("用户申请注册666");//MyLog.form.textAdd("用户申请注册");Console.WriteLine(model.Message);LoginDTO loginDto = Coding<LoginDTO>.decode(model.Message);Console.WriteLine("与众不同"+loginDto.userName.Length+"    "+ loginDto.passWord.Length);if(loginDto.userName.Length<=17&& loginDto.passWord.Length<=17){Console.WriteLine("BizUtil.account.create");bool v = BizUtil.account.create(loginDto.userName, loginDto.passWord);session.write(0, 0, 3, (object)new BoolDTO(v));}
}

然后去看BizUtil.account.create()函数的代码,vs会自动定位的。

有如下两类数据需要存储

namespace GameServer.src_biz
{internal class BizUtil{public static AccountBiz account = new AccountBiz();public static UserBizImpl user = new UserBizImpl();}
}

 去看AccountBiz类(account是类中实例化的一个对象)中的create()函数的内容,只要知道满足条件就去进TryAdd函数就可以了:

public bool create(string userName, string password)
{if (this.accounts.ContainsKey(userName))return false;AccountModel accountModel = new AccountModel(Guid.NewGuid().ToString(), userName, password);return this.accounts.TryAdd(userName, accountModel);
}

实际测试发现,create函数的返回值是True和false,可以做到1.判断账号是否重复。但2只要服务器重启,之前的数据就全部作废了!简而言之没有数据库功能!

相关文章:

unity学习(19)——客户端与服务器合力完成注册功能(1)入门准备

逆向服务器用了三天的时间&#xff0c;但此时觉得一切都值&#xff0c;又可以继续学习了。 服务器中登录请求和注册请求由command变量进行区分&#xff0c;上一层的type变量都是login。 public void process(Session session, SocketModel model) {switch (model.Command){ca…...

论文精读--对比学习论文综述

InstDisc 提出了个体判别任务&#xff0c;而且利用这个代理任务与NCE Loss去做对比学习从而得到了不错的无监督表征学习的结果&#xff1b;同时提出了别的数据结构——Memory Bank来存储大量负样本&#xff1b;解决如何对特征进行动量式的更新 翻译&#xff1a; 有监督学习的…...

文章复现 | 差异分析和PPI网络构建

原文链接&#xff1a;差异分析和PPI网路图绘制教程 写在前面 在原文中&#xff0c;作者获得285个DEG&#xff0c;在此推文中共获得601个DEG。小杜的猜想是标准化的水段不同的原因吧&#xff0c;或是其他的原因。此外&#xff0c;惊奇的发现发表医学类的文章在附件中都不提供相…...

入门级10寸加固行业平板—EM-I10J

亿道信息以其坚固耐用的智能终端设备而闻名&#xff0c;近日发布了一款理想入门级 10 英寸加固平板电脑—I10J。 EM-I10J​​ 这是一款 10 英寸的平板电脑&#xff0c;主要运行 Windows 10操作系统&#xff0c;带有硬化塑料外壳&#xff0c;具有 IP65 防水防尘功能和 MIL-STD 8…...

gem5 garnet 合成流量: packet注入流程

代码流程 下图就是全部. 剩下文字部分是细节补充,但是内容不变: bash调用python,用python配置好configuration, 一个cpu每个tick运行一次,requestport发出pkt. bash 启动 python文件并配置 ./build/NULL/gem5.debug configs/example/garnet_synth_traffic.py \--num-cpus…...

java实现排序算法(上)

排序算法 冒泡排序 时间和空间复杂度 要点 每轮冒泡不断地比较比较相邻的两个元素,如果它们是逆序的,则需要交换它们的位置下一轮冒泡,可以调整未排序的右边界,减少不必要比较 代码 public static int[] test(int[] array) {// 外层循环控制遍历次数for (int i 0; i <…...

「算法」滑动窗口

前言 算法需要多刷题积累经验&#xff0c;所以我行文重心在于分析解题思路&#xff0c;理论知识部分会相对简略一些 正文 滑动窗口属于双指针&#xff0c;这两个指针是同向前行&#xff0c;它们所夹的区间就称为“窗口” 啥时候用滑动窗口&#xff1f; 题目涉及到“子序列…...

Windows11(非WSL)安装Installing llama-cpp-python with GPU Support

直接安装&#xff0c;只支持CPU。想支持GPU&#xff0c;麻烦一些。 1. 安装CUDA Toolkit (NVIDIA CUDA Toolkit (available at https://developer.nvidia.com/cuda-downloads) 2. 安装如下物件&#xff1a; gitpythoncmakeVisual Studio Community (make sure you install t…...

rtt设备io框架面向对象学习-脉冲编码器设备

目录 1.脉冲编码器设备基类2.脉冲编码器设备基类的子类3.初始化/构造流程3.1设备驱动层3.2 设备驱动框架层3.3 设备io管理层 4.总结5.使用 1.脉冲编码器设备基类 此层处于设备驱动框架层。也是抽象类。 在/ components / drivers / include / drivers 下的pulse_encoder.h定义…...

华为OD机试真题- 攀登者2-2024年OD统一考试(C卷)

题目描述: 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。地图表示为一维数组,数组的索引代表水平位置,数组的高度代表相对海拔高度。其中数组元素0代表地面。例如[0,1,4,3,1,0,0,1,2,3,1,2,1,0], 代表如下图所示的地图,地图中有两个山脉位置分别为 1,2,3,4,5和8,9,1…...

19.Qt 组合框的实现和应用

目录 前言&#xff1a; 技能&#xff1a; 内容&#xff1a; 1. 界面 2.槽 3.样式表 参考&#xff1a; 前言&#xff1a; 学习QCombox控件的使用 技能&#xff1a; 简单实现组合框效果 内容&#xff1a; 1. 界面 在ui编辑界面找到input widget里面的comboBox&#xff…...

【Linux】进程地址空间的理解

进程地址空间的理解 一&#xff0c;什么是程序地址空间二&#xff0c;页表和虚拟地址空间三&#xff0c;为什么要有进程地址空间 一&#xff0c;什么是程序地址空间 在我们写程序时&#xff0c;都会有这样下面的内存结构&#xff0c;来存放变量和代码等数据。 一个进程要执行…...

【Jvm】类加载机制(Class Loading Mechanism)原理及应用场景

文章目录 Jvm基本组成一.什么是JVM类的加载二.类的生命周期阶段1&#xff1a;加载阶段2&#xff1a;验证阶段3&#xff1a;准备阶段4&#xff1a;解析阶段5&#xff1a;初始化 三.类初始化时机四.类加载器1.引导类加载器&#xff08;Bootstrap Class Loader&#xff09;2.拓展类…...

Spring AOP的实现方式

AOP基本概念 Spring框架的两大核心&#xff1a;IoC和AOP AOP&#xff1a;Aspect Oriented Programming&#xff08;面向切面编程&#xff09; AOP是一种思想&#xff0c;是对某一类事情的集中处理 面向切面编程&#xff1a;切面就是指某一类特定的问题&#xff0c;所以AOP可…...

Linux------环境变量

目录 前言 一、环境变量 二、添加PATH环境变量 三、HOME环境变量 四、查看所有环境变量 1.指令获取 2.代码获取 2.1 getenv 2.2main函数的第三个参数 2.3 全局变量environ 五、环境变量存放地点 六、添加自命名环境变量 七、系统环境变量具有全局属性 八、环境变…...

计算机视觉所需要的数学基础

计算机视觉领域中使用的数学知识广泛而深入&#xff0c;以下是一些关键知识点及其在计算机视觉中的应用&#xff1a; 线性代数&#xff1a; - 矩阵运算&#xff1a;用于图像的表示和处理&#xff0c;如图像旋转、缩放、裁剪等。 - 向量空间&#xff1a;用于描述图像中的…...

ChatGPT魔法1: 背后的原理

1. AI的三个阶段 1&#xff09; 上世纪50~60年代&#xff0c;计算机刚刚产生 2&#xff09; Machine learning 3&#xff09; Deep learning&#xff0c; 有神经网络&#xff0c; 最有代表性的是ChatGPT, GPT(Generative Pre-Trained Transformer) 2. 深度神经网络 llya Suts…...

【c/c++】获取时间

在一些应用的编写中我们有时候需要用到时间&#xff0c;或者需要一个“锚点”来确定一些数的值。在c/c中有两个用来确定时间的函数&#xff1a;time/gettimeofday 一、time time_t time(time_t *timer);time 函数返回当前时间的时间戳&#xff08;自 1970 年 1 月 1 日以来经…...

uniapp富文本文字长按选中(用于复制,兼容H5、APP、小程序三端)

方案&#xff1a;使用u-parse的selectable属性 <u-parse :selectable"true" :html"content"></u-parse> 注意&#xff1a;u-parse直接使用是不兼容小程序的&#xff0c;需要对u-parse进行改造&#xff1a; 1. 查看u-parse源码发现小程序走到以…...

常见的几种Web安全问题测试简介

Web项目比较常见的安全问题 1.XSS(CrossSite Script)跨站脚本攻击 XSS(CrossSite Script)跨站脚本攻击。它指的是恶意攻击者往Web 页面里插入恶意html代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其中Web 里面的html 代码会被执行&#xff0c;从而达到恶意用户的特殊…...

YOLOv8安全帽识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置)

摘要 为有效监测施工现场安全帽佩戴情况&#xff0c;本研究基于YOLOv8目标检测算法构建了一套安全帽检测系统。数据集共包含5000张图像&#xff0c;涵盖helmet&#xff08;安全帽&#xff09;与head&#xff08;未戴安全帽的头部&#xff09;两类目标&#xff0c;其中训练集35…...

终极英雄联盟辅助工具League Akari:3分钟快速上手指南

终极英雄联盟辅助工具League Akari&#xff1a;3分钟快速上手指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否厌倦了在英雄联盟客户…...

别再只盯着业务代码了!SpringBoot应用层安全之Tomcat连接管理实战

SpringBoot应用层安全实战&#xff1a;Tomcat连接管理的三驾马车 当我们在讨论SpringBoot应用安全时&#xff0c;业务代码的漏洞修复往往占据了大部分注意力。然而&#xff0c;真正的安全防线远不止于此——应用层基础设施的配置与优化同样至关重要。想象一下&#xff0c;你的应…...

瑞萨RZ/V2N:15 TOPS能效比AI视觉芯片,赋能边缘智能应用

1. 瑞萨RZ/V2N&#xff1a;一颗为“看得懂”而生的中端AI视觉芯在嵌入式视觉AI这个赛道上&#xff0c;开发者们常常面临一个经典的“选择题”&#xff1a;是追求极致的性能&#xff0c;上马功耗和成本都更高的高端方案&#xff0c;还是为了控制预算和功耗&#xff0c;在性能上做…...

uni-app项目里遇到‘get’ of undefined?别慌,可能是Vue3条件编译惹的祸

uni-app开发中"get of undefined"错误深度解析&#xff1a;Vue3条件编译的隐秘陷阱 1. 错误现象背后的真相 当你在uni-app项目中看到控制台抛出Cannot read property get of undefined时&#xff0c;这种看似简单的类型错误往往隐藏着更深层的框架适配问题。不同于常…...

别再只改IMEI了!深入理解高通基带QCN:从参数结构到软件检测的完整对抗思路

高通基带QCN参数体系解析与多维设备指纹对抗策略 在移动设备安全领域&#xff0c;设备标识参数的修改与检测始终是一场动态博弈。随着安卓系统安全机制的不断升级&#xff0c;简单的IMEI修改早已无法应对现代应用的多维指纹检测体系。理解高通基带QCN参数的组织结构及其在系统中…...

传统 OA 系统为什么难以满足现代企业管理需求

传统 OA 系统为什么难以满足现代企业管理需求 OA 曾经是很多企业数字化的起点&#xff1a;通知公告、请假报销、文件流转、会议管理、用印审批&#xff0c;让办公室从纸质时代进入线上时代。但今天&#xff0c;企业对 OA 的期待已经变了。 现代企业不只需要“把审批搬到线上…...

BFloat16指令集与矩阵乘法优化技术详解

1. BFloat16指令集概述BFloat16&#xff08;Brain Floating Point 16&#xff09;是Google Brain团队提出的一种16位浮点格式&#xff0c;专为深度学习应用优化。这种格式保留了与IEEE 754单精度浮点数&#xff08;FP32&#xff09;相同的8位指数位&#xff0c;但将尾数位从23位…...

影刀RPA店群自动化实战:Python协同多实例隔离与高并发任务调度系统架构设计

大家好&#xff0c;我是林焱。 过去这几年&#xff0c;我一直扎根在电商自动化研发与系统交付的最前线。 看着许多电商团队从单机单店的“草莽时代”&#xff0c;一步步走向拼多多、TEMU、TikTok Shop 的矩阵化运营。 在这个过程中&#xff0c;大家在享受效率飞升红利的同时…...

Blender 3MF插件终极指南:如何在Blender中实现3D打印文件的完美导入导出

Blender 3MF插件终极指南&#xff1a;如何在Blender中实现3D打印文件的完美导入导出 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 想要在Blender中高效处理3D打印文件吗…...