zoukankan      html  css  js  c++  java
  • Unity3d-Socket之龙一编年史network.dll分析(1)

    今天闲着无聊,看到群里的老大共享了反编译的工具,就下载下来玩下。

    说道反编译我个人不太推崇反编译,感觉不道德,毕竟是人家的代码,但是又回想一下,我们拿代码看是抱着学习的态度又有何不可,所谓既是民族的也是世界的。=_=

    好废话不多说,接着我们看看这款unity制作的游戏的dll,看看他们代码是怎么实现的。

    首先呢,我只是分析了一下他的socket代码,可谓是经典中的经典,很值得一学。

    先来看看这个dll中的类和接口,了解一下大体的情况。

    其中最为重要的是CNetwork和CCllientSocket类。这两个类是网络连接、接收和发送的主要运行类。

     

    在这个游戏中呢,他将Socket封装到了自己的类中来管理,也就是CClientSocket.cs

     

    那么我们就先来看这个类实现:

    我们先来看看字段:

    		private Socket m_oSocket;
    		private SocketState m_nState;//这个是enum类型,主要记录socket的链接状态
    		private byte[] m_oSendBuff;//发送的字节数组缓存
    		private byte[] m_oRecvBuff;//接收的自己数组缓存
    		private volatile int m_nStartPos;//发送开始的指针位置
    		private volatile int m_nEndPos;//发送结束的指针位置
    		private int m_nCurrRecvLen;//接收的总字节数
    		private bool m_bSending;//是否在发送数据中
    		private CNetwork m_oNetwork;//这个类总管理socket的管理类
    		private IPacketBreaker m_oBreaker;//
    		private object m_oStateLock = new object();//socket状态锁,因为与服务器交互是异步的,所以要加锁
    		private object m_oSendingLock = new object();//发送状态锁
    

  • 相关阅读:
    C# 拖放操作源码详解
    Dev系列控件之XtraCharts(一)
    DateEdit如果开启Vista模式并显示日期+时间模式
    DevXpress控件: 第二篇将绘图进行到底: Charter控件(附图)
    C#操作Word (1)Word对象模型
    文曲星猜数,纯粹乱写
    转 浩方原理初步分析
    生成变换方向矩阵
    关于嵌套类的调用更新问题
    所有前n位可以被n整除的9位数
  • 原文地址:https://www.cnblogs.com/CaomaoUnity3d/p/4732713.html
Copyright © 2011-2022 走看看