unity学习(42)——创建(create)角色脚本(panel)——UserHandler(收)+CreateClick(发)——服务器收包2

news2025/1/20 15:44:45

1.解决上一次留下的问题:

log和reg的时候也有session,输出看一下这两个session是同一个不:

实测结果reg log accOnline中的session都是同一个对象但是getAccid时候的session就是另一个了

测试结果,说明在LogicHandler的process中就已经是不同的

 public void process(Session session, SocketModel model)
 {
   try
   {
     switch (model.Type)
     {
       case 0:
                     Console.WriteLine("process-log:"+session.idTime);
         LoginHandler.getInstance().process(session, model);
         break;
       case 1:
                     Console.WriteLine("process-map:"+session.idTime);
                     MapHandler.getInstance().process(session, model);
         break;
       case 2:
                     Console.WriteLine("process-user:"+session.idTime);
                     UserHandler.getInstance().process(session, model);
         break;
     }
   }
   catch (Exception ex)
   {
             //MyLog.form.textAdd(ex.Message);
         Console.WriteLine(ex.Message);
   }
 }

再继续往上翻一层:

public static void readMessage(Session session, byte[] bytes)//读取数据包
{
    try
    {
        ByteArray byteArray = new ByteArray(bytes);
        int num1 = byteArray.ReadInt();
        int num2 = byteArray.ReadInt();
        int num3 = byteArray.ReadInt();
        int length = byteArray.ReadInt();
        string str = (string)null;
        if (length > 0)
            str = byteArray.ReadUTFBytes((uint)length);
        LogicHandler.getInstance().process(session, new SocketModel()
        {
            Type = num1,
            Area = num2,
            Command = num3,
            Message = str
        });
        Console.WriteLine("readMessage"+ num1+session.idTime+"!!!!!!!!!!!!!!!!!!!!!!!!!");
    }
    catch
    {
    }
}

结果很明显,在readMessage时就已经出现严重分化

 再往上翻一层

private static void ReceiveCallBack(IAsyncResult ar)
{
    Session asyncState = (Session)ar.AsyncState;
    try
    {
        int count = asyncState.socket.EndReceive(ar);
        if (count == 0)
        {
            //MyLog.form.textAdd("有客户端断开连接");
            Console.WriteLine("有客户端断开连接");
            LogicHandler.getInstance().sessionClose(asyncState);
            return;
        }
        byte[] numArray = new byte[count];
        Buffer.BlockCopy((Array)asyncState.message, 0, (Array)numArray, 0, count);
        ServerStart.readMessage(asyncState, numArray);
    }
    catch (SocketException ex)
    {
        LogicHandler.getInstance().sessionClose(asyncState);
        asyncState.socket.Close();
        return;
    }
    asyncState.socket.BeginReceive(asyncState.message, 0, asyncState.message.Length, SocketFlags.None, new AsyncCallback(ServerStart.ReceiveCallBack), (object)asyncState);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1475306.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

lv21 QT对话框3

1 内置对话框 标准对话框样式 内置对话框基类 QColorDialog, QErrorMessage QFileDialog QFontDialog QInputDialog QMessageBox QProgressDialogQDialog Class帮助文档 示例:各按钮激发对话框实现基类提供的各效果 第一步:实现组件布局&…

水电表远程集中抄表管理系统

水电表远程集中抄表管理系统是当前水电行业智能化发展的关键技术之一,为水电企业和用户提供了便捷、高效的抄表管理解决方案。该系统结合了远程监控、自动抄表、数据分析等多种功能,实现了水电抄表的智能化和精准化,为用户节省了大量人力物力…

The authenticity of host ‘github.com (20.205.243.166)‘ can‘t be established.

1、运行git clone报错: The authenticity of host github.com (20.205.243.166) cant be established. ECDSA key fingerprint is SHA256:p2QAC1TJYererOttrVc98/R1BWERWu3/LiyFdHfQM. Are you sure you want to continue connecting (yes/no/[fingerprint])? 这个…

【六袆-Golang】Golang:安装与配置Delve进行Go语言Debug调试

安装与配置Delve进行Go语言Debug调试 一、Delve简介二、win-安装Delve三、使用Delve调试Go程序[命令行的方式]四、使用Golang调试程序 Golang开发工具系列:安装与配置Delve进行Go语言Debug调试 摘要: 开发环境中安装和配置Delve,一个强大的G…

2024年腾讯云4核8G12M配置的轻量服务器同时支持多大访问量?

腾讯云4核8G服务器支持多少人在线访问?支持25人同时访问。实际上程序效率不同支持人数在线人数不同,公网带宽也是影响4核8G服务器并发数的一大因素,假设公网带宽太小,流量直接卡在入口,4核8G配置的CPU内存也会造成计算…

HUAWEI 华为交换机 配置基于VLAN的MAC地址学习限制接入用户数量 配置示例

组网需求 如 图 2-15 所示,用户网络 1 通过 LSW1 与 Switch 相连, Switch 的接口为 GE0/0/1 。用户网络2通过 LSW2 与 Switch 相连, Switch 的接口为 GE0/0/2 。 GE0/0/1 、 GE0/0/2 同属于 VLAN2。为控制接入用户数,对 VLAN2 进…

Eclipse是如何创建web project项目的?

前面几篇描述先后描述了tomcat的目录结构和访问机制,以及Eclipse的项目类型和怎么调用jar包,还有java的main函数等,这些是一些基础问题,基础高清出来才更容易搞清楚后面要说的东西,也就是需求带动学习,后面…

element el-table表格内容宽度自适应,不换行,不隐藏

2024.2.27今天我学习了如何用el-table实现表格宽度的自适应,当我们动态渲染表格数据的时候,有时候因为内容太多会出现挤压换行的效果: 我们需要根据内容的最大长度设置动态的宽度,这边我在utils里面封装了一个js: //…

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(八)

Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型,由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”(そら sora),即天空之意,以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模…

数据界的达克摩斯之剑----深入浅出带你理解网络爬虫(Third)

目录 网络爬虫示例 1.爬行策略 1.1 选择策略: 1.1.1 限定访问链接 1.1.2 路径检索 1.1.3 聚焦抓取 1.1.5 WEB3.0检索 1.2重新访问策略 1.3 平衡礼貌策略 1.4 并行策略 2.网络爬虫体系结构 2.1 URL一般化 接上文数据界的达克摩斯之剑----深入浅出带你理解…

【主题广范|见刊快】2024年电力电气与机械,能源工程国际会议(ICPEMEE 2024)

【主题广范|见刊快】2024年电力电气与机械,能源工程国际会议(ICPEMEE 2024) 重要信息 会议官网:http://www.icpemee.com会议地址:合肥截稿日期:2024.03.10召开日期:2024.03.20 (先投…

【C语言】学生宿舍信息管理系统

目录 项目说明 1. 数据结构设计 2. 功能实现 3. 主菜单设计 4. 文件操作 5. 系统使用 项目展示 1.主菜单功能界面 ​编辑 2.添加信息 3.查询信息 4.修改信息 5.删除信息 6.退出程序 项目完整代码 结语 在这篇博客中,我们将探讨如何使用C语言来开发…

虚拟机JVM

虚拟机 1、定义jvm 假想计算机 运行在操作系统之上 和硬件之间没有直接交互 包括 一套字节码指令、寄存器、栈、垃圾回收、堆 一个存储方法域 jvm:承担一个翻译工作,动态的将java代码编译成操作系统可以识别的机器码。 从软件层面屏蔽了不同操作系统在底层硬件与指…

备战蓝桥杯————k个一组反转单链表

k个反转单链表,顾名思义就是k个节点为一组进行反转,这是一道困难的题目,如何解答,可以在我们前面的反转链表中得到思路。 如何 K 个一组反转单链表 题目描述 给你链表的头节点 head ,每 k 个节点一组进行翻转&#xf…

四院士领衔,多位大学院校教授,3月齐聚泉城,2024发酵展即将盛装启幕!

2024济南生物发酵系列展同期举办 2024北方工业节能装备展 2024山东国际风机工业展 2024国际合成生物学产业展 2024国际生物制药与技术装备展 2024国际生化仪器与实验室装备展 2024山东国际卫生级流体、泵阀管道展 即将盛大开幕 30000平方米展示面积 500家知名企业参展…

完全分布式运行模式

完全分布式运行模式 分析:之前已经配置完成 ​ 1)准备3台客户机(关闭防火墙、静态ip、主机名称) ​ 2)安装JDK ​ 3)配置环境变量 ​ 4)安装Hadoop ​ 5)配置环境变量 ​ 6&am…

无人机飞行控制系统技术,四旋翼无人机控制系统建模技术详解

物理建模是四旋翼无人机控制系统建模的基础,主要涉及到无人机的物理特性和运动学特性。物理建模的目的是将无人机的运动与输入信号(如控制电压)之间的关系进行数学描述。 四旋翼无人直升机是具有四个输入力和六个坐标输出的欠驱动动力学旋翼…

Liunx前后端项目部署(小白也可安装)

文章目录 一、CentOS服务器的安装二、jdk安装三、Tomcat安装四、MySQL安装、五、nginX安装六、多个项目负载均衡,部署后端项目七、前端项目部署 一、CentOS服务器的安装 选择liunx,下面选择CentOS 7 ![在这里插入图片描述](https://img-blog.csdnimg.cn…

springboot之jdbc、druid、mybatis

springboot整合jdbc spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.52.3:3306/mybatis?useUnicodetrue&characterEncodingutf-8&serverTimezoneUTCusername: rootpassword: root<?xml version"1.0" encodi…

何恺明新作 l-DAE:解构扩散模型

何恺明新作 l-DAE&#xff1a;解构扩散模型 提出背景扩散模型步骤如何在不影响数据表征能力的同时简化模型&#xff1f;如何进一步推动模型向经典DAE靠拢&#xff1f;如何去除对生成任务设计的DDM中不适用于自监督学习的部分&#xff1f;如何改进DDM以专注于清晰图像表示的学习…