Example #1
0
    //获取socket的头包
    public static byte[] GetSocketHeadBuff(NetProtocol.NET_GM_PROTPCOL type, Int16 MessageSize)
    {
        byte[] headbuff = new byte[NetProtocol.Protocol.ALLST_GENERIC_LEN];

        object objhead = NetTools.BytesToStuct(headbuff, typeof(NetProtocol.ALLST_GENERIC));

        NetProtocol.ALLST_GENERIC pMsgGeneric = (NetProtocol.ALLST_GENERIC)objhead;
        pMsgGeneric.dwTimeStamp = 0;
        pMsgGeneric.wType       = (UInt16)type;
        pMsgGeneric.iMessageLen = MessageSize;
        pMsgGeneric.iPlayerID   = 1001;
        pMsgGeneric.nError      = (Int16)NetProtocol.GAMESERVER_ERROR.ERR_GAMESERVER_SUCCESS;

        byte[] Readheadbuff = NetTools.GetBytes(pMsgGeneric);
        return(Readheadbuff);
    }
Example #2
0
    //通过clientSocket接收数据
    private static void ReciveMsg()
    {
        //DynamicBufferManager receiveBuffer = m_asyncSocketUserToken.ReceiveBuffer;
        byte[] dataBuff = new byte[NetProtocol.ConstVar.RECIVEBUFFSIZE_MAX];
        //while (true)
        {
            Array.Clear(dataBuff, 0, dataBuff.Length);
            int receiveLength = clientSocket.Receive(dataBuff, dataBuff.Length, SocketFlags.None);

            if (receiveLength >= NetProtocol.Protocol.ALLST_GENERIC_LEN)
            {
                //接收server 发来的数据
                object objhead_1 = NetTools.BytesToStuct(dataBuff, typeof(NetProtocol.ALLST_GENERIC));
                NetProtocol.ALLST_GENERIC pMsgGeneric = (NetProtocol.ALLST_GENERIC)objhead_1;
                // if (pMsgGeneric.iMessageLen + Protocol.ALLST_GENERIC_LEN <= receiveLength)
                {
                    Dispatch(pMsgGeneric, dataBuff, receiveLength);
                }
            }
        }
    }
Example #3
0
    private static void Dispatch(NetProtocol.ALLST_GENERIC pMsgGeneric, byte[] dataBuff, int ReciveSize)
    {
        byte[] Msgbuff = new byte[NetProtocol.ConstVar.RECIVEBUFFSIZE_MAX];
        Array.Copy(dataBuff, NetProtocol.Protocol.ALLST_GENERIC_LEN, Msgbuff, 0, ReciveSize - NetProtocol.Protocol.ALLST_GENERIC_LEN);
        switch (pMsgGeneric.wType)
        {
        case (UInt16)NetProtocol.NET_GM_PROTPCOL.STOC_CLIENTLOGIN_MSG:
        {
            //连接成功
            object obj = NetTools.BytesToStuct(Msgbuff, typeof(NetProtocol.STOC_CLIENTLOGIN));
            LogonServer("172.22.20.232", "admin", "");
        }
        break;

        case (UInt16)NetProtocol.NET_GM_PROTPCOL.STOC_INITVIDEO_MSG:
        {
            //检测连接视频服务器是否成功
            object obj = NetTools.BytesToStuct(Msgbuff, typeof(NetProtocol.STOC_INITVIDEO));
            NetProtocol.STOC_INITVIDEO pInfo = (NetProtocol.STOC_INITVIDEO)obj;
            if (pInfo.Ret > 0)
            {
                //连接成功
                GetCameraList();
            }
            else
            {
                //连接失败
            }
        }
        break;

        case (UInt16)NetProtocol.NET_GM_PROTPCOL.STOC_GETVIDEODATA_MSG:
        {
            //获取视频数据
            object obj = NetTools.BytesToStuct(Msgbuff, typeof(NetProtocol.STOC_VIDEOINFO));
            NetProtocol.STOC_VIDEOINFO pInfo = (NetProtocol.STOC_VIDEOINFO)obj;
            ServerCameraList.Clear();
            foreach (NetProtocol.CMS_NodeData data in pInfo.VideoData)
            {
                NetProtocol.CAMERAINFO camera = new NetProtocol.CAMERAINFO();
                camera.cName   = data.cName;
                camera.hNode   = data.hNode;
                camera.bPTZ    = data.bPTZ;
                camera.nStatus = data.nStatus;
                ServerCameraList.Add(camera);
            }

            foreach (NetProtocol.CMS_NodeData data in pInfo.VideoData)
            {
                if (data.nStatus == 1 && data.bPTZ == 0)
                {
                    hFirOperateCamera = data.hNode;
                    hCurOperateCamera = data.hNode;
                    FirCameraNam      = data.cName;
                    CurCameraName     = data.cName;
                    break;
                }
            }
            foreach (NetProtocol.CMS_NodeData data in pInfo.VideoData)
            {
                if (data.nStatus == 1 && data.bPTZ == 1)
                {
                    hSecOperateCamera = data.hNode;
                    SecCameraNam      = data.cName;
                    break;
                }
            }



            openCamera(hCurOperateCamera, CurCameraName.ToString());
        }
        break;

        case (UInt16)NetProtocol.NET_GM_PROTPCOL.STOC_OPENCAMERA_MSG:
        {
            //打开视频返回的消息(获取当前预览的句柄)
            object obj = NetTools.BytesToStuct(Msgbuff, typeof(NetProtocol.CTOS_CAMERAINFO));
            NetProtocol.CTOS_CAMERAINFO pInfo = (NetProtocol.CTOS_CAMERAINFO)obj;
            if (pInfo.camerHander != IntPtr.Zero)
            {
                // 成功打开
                if (hCurOperateCamera != IntPtr.Zero)
                {
                    SetVideoCallBackFunc(hCurOperateCamera, CurCameraName);
                }
            }
        }
        break;

        case (UInt16)NetProtocol.NET_GM_PROTPCOL.STOC_CLOSECAMERA_MSG:
        {
            //关闭当前视频
        }
        break;

        case (UInt16)NetProtocol.NET_GM_PROTPCOL.STOC_SETPREPOSITION_MSG:
        {
            //设置预设位返回的消息
        }
        break;

        case (UInt16)NetProtocol.NET_GM_PROTPCOL.STOC_GOTOPREPOSITION_MSG:
        {
            //打开预设位返回的消息
        }
        break;

        case (UInt16)NetProtocol.NET_GM_PROTPCOL.STOC_LOGINOFFSERVER_MSG:
        {
            //关闭服务器返回的消息
        }
        break;

        case (UInt16)NetProtocol.NET_GM_PROTPCOL.STOC_GETCALLBACKDATA_MSG:
        {
            //获取回调数据

            object obj = NetTools.BytesToStuct(Msgbuff, typeof(NetProtocol.STOC_CAMERANAME));
            NetProtocol.STOC_CAMERANAME pData = (NetProtocol.STOC_CAMERANAME)obj;
            //   Array.Copy(源数据, 源数据开始复制处索引, 接收数据, 接收数据开始处索引, 复制多少个数据);
            byte[] CompareByte = new byte[NetProtocol.Protocol.STOC_CAMERANAME_LEN];
            Array.Copy(pData.pName, 0, CompareByte, 0, pData.size);

            byte[] CompareFirCameraByte = new byte[NetProtocol.Protocol.STOC_CAMERANAME_LEN];

            Array.Copy(FirCameraNam, 0, CompareFirCameraByte, 0, pData.size);


            byte[] CompareSecCameraByte = new byte[NetProtocol.Protocol.STOC_CAMERANAME_LEN];

            Array.Copy(SecCameraNam, 0, CompareSecCameraByte, 0, pData.size);

            if (NetTools.PasswordEquals(CompareByte, CompareFirCameraByte))
            {
                mIsReadShareMemory = true;
            }
            if (NetTools.PasswordEquals(CompareByte, CompareSecCameraByte))
            {
                mSecIsReadShareMemory = true;
            }
            //int index = count * NetProtocol.Protocol.STOC_RGB_LEN;

            //currentBuff += NetProtocol.Protocol.STOC_RGB_LEN;
            //count++;
            //Debug.Log("currentBuff =" + currentBuff);
            //Debug.Log("count =" + count);
            //txt2dtest.LoadRawTextureData(pData.pRGB);
            //txt2dtest.Apply();
        }
        break;

        default:
            break;
        }
    }