Example #1
0
    public static void SetVideoCallBackFunc(IntPtr OperateCamera, byte[] CameraName)
    {
        Stream str;

        str = new MemoryStream();
        byte[] headBuff = GetSocketHeadBuff(NetProtocol.NET_GM_PROTPCOL.CTOS_GETCALLBACKDATA_MSG, (Int16)NetProtocol.Protocol.CTOS_CAMERAINFO_LEN);

        byte[] MSG    = new byte[NetProtocol.Protocol.CTOS_CAMERAINFO_LEN];
        object objMsg = NetTools.BytesToStuct(MSG, typeof(NetProtocol.CTOS_CAMERAINFO));

        NetProtocol.CTOS_CAMERAINFO pMsg = (NetProtocol.CTOS_CAMERAINFO)objMsg;

        pMsg.camerHander = OperateCamera;
        pMsg.PlayerIndex = 1001;
        pMsg.cName       = CameraName;
        byte[] ReadMsgbuff = NetTools.GetBytes(pMsg);

        byte[] PacketBuff = new byte[NetProtocol.Protocol.CTOS_CAMERAINFO_LEN + headBuff.Length];
        str.Write(headBuff, 0, headBuff.Length);
        str.Write(ReadMsgbuff, 0, ReadMsgbuff.Length);
        str.Position = 0;
        int r = str.Read(PacketBuff, 0, PacketBuff.Length);

        if (r > 0)
        {
            clientSocket.Send(PacketBuff, PacketBuff.Length, SocketFlags.None);
        }
    }
Example #2
0
    // 关闭当前摄像头
    public static void closeCamera()
    {
        Stream str;

        str = new MemoryStream();
        byte[] headBuff = GetSocketHeadBuff(NetProtocol.NET_GM_PROTPCOL.CTOS_CLOSECAMERA_MSG, (Int16)NetProtocol.Protocol.CTOS_CAMERAINFO_LEN);

        byte[] MSG    = new byte[NetProtocol.Protocol.CTOS_CAMERAINFO_LEN];
        object objMsg = NetTools.BytesToStuct(MSG, typeof(NetProtocol.CTOS_CAMERAINFO));

        NetProtocol.CTOS_CAMERAINFO pMsg = (NetProtocol.CTOS_CAMERAINFO)objMsg;

        pMsg.camerHander = hCurOperateCamera;
        pMsg.PlayerIndex = 1001;
        pMsg.cName       = CurCameraName;
        //  NetTools.CodeBytes(CurCameraName, 64);
        byte[] ReadMsgbuff = NetTools.GetBytes(pMsg);

        byte[] PacketBuff = new byte[NetProtocol.Protocol.CTOS_CAMERAINFO_LEN + headBuff.Length];
        str.Write(headBuff, 0, headBuff.Length);
        str.Write(ReadMsgbuff, 0, ReadMsgbuff.Length);
        str.Position = 0;
        int r = str.Read(PacketBuff, 0, PacketBuff.Length);

        if (r > 0)
        {
            clientSocket.Send(PacketBuff, PacketBuff.Length, SocketFlags.None);
        }
    }
Example #3
0
    // 打开预设位
    public static void GoToPrePosition(string name, int pos)
    {
        Stream str;

        str = new MemoryStream();
        byte[] headBuff = GetSocketHeadBuff(NetProtocol.NET_GM_PROTPCOL.CTOS_GOTOPREPOSITION_MSG, (Int16)NetProtocol.Protocol.PREPOSITIONINFO_LEN);

        byte[] MSG    = new byte[NetProtocol.Protocol.PREPOSITIONINFO_LEN];
        object objMsg = NetTools.BytesToStuct(MSG, typeof(NetProtocol.PREPOSITIONINFO));

        NetProtocol.PREPOSITIONINFO pMsg = (NetProtocol.PREPOSITIONINFO)objMsg;
        pMsg.camerHander = hCurOperateCamera;
        pMsg.cName       = NetTools.CodeBytes(name, 64);
        pMsg.ret         = pos;
        byte[] ReadMsgbuff = NetTools.GetBytes(pMsg);

        byte[] PacketBuff = new byte[NetProtocol.Protocol.PREPOSITIONINFO_LEN + headBuff.Length];
        str.Write(headBuff, 0, headBuff.Length);
        str.Write(ReadMsgbuff, 0, ReadMsgbuff.Length);
        str.Position = 0;
        int r = str.Read(PacketBuff, 0, PacketBuff.Length);

        if (r > 0)
        {
            clientSocket.Send(PacketBuff, PacketBuff.Length, SocketFlags.None);
        }
    }
Example #4
0
    //ip 172.22.20.232 userName admin pwd ""登录服务器
    public static void LogonServer(string ip, string userName, string pwd)
    {
        Stream str;

        str = new MemoryStream();
        byte[] headBuff = GetSocketHeadBuff(NetProtocol.NET_GM_PROTPCOL.CTOS_INITVIDEO_MSG, (Int16)NetProtocol.Protocol.CTOS_INITVIDEO_LEN);

        byte[] MSG    = new byte[NetProtocol.Protocol.CTOS_INITVIDEO_LEN];
        object objMsg = NetTools.BytesToStuct(MSG, typeof(NetProtocol.CMS_LogonInfo));

        NetProtocol.CMS_LogonInfo pMsg = (NetProtocol.CMS_LogonInfo)objMsg;

        pMsg.nStructVersion = 201402170;
        pMsg.srvIP          = NetTools.CodeBytes(ip, 64);
        pMsg.User           = NetTools.CodeBytes(userName, 64);
        pMsg.Passwd         = NetTools.CodeBytes(pwd, 64);
        pMsg.nProtocol      = 1;
        pMsg.nRelayMode     = 0;
        byte[] ReadMsgbuff = NetTools.GetBytes(pMsg);

        byte[] PacketBuff = new byte[NetProtocol.Protocol.CTOS_INITVIDEO_LEN + headBuff.Length];
        str.Write(headBuff, 0, headBuff.Length);
        str.Write(ReadMsgbuff, 0, ReadMsgbuff.Length);
        str.Position = 0;
        int r = str.Read(PacketBuff, 0, PacketBuff.Length);

        if (r > 0)
        {
            clientSocket.Send(PacketBuff, PacketBuff.Length, SocketFlags.None);
        }
    }
Example #5
0
    //socket 握手通信
    private static void LaunchSocket(string Name)
    {
        Stream str;

        str = new MemoryStream();
        byte[] headBuff = GetSocketHeadBuff(NetProtocol.NET_GM_PROTPCOL.CTOS_CLIENTLOGIN_MSG, (Int16)NetProtocol.Protocol.CTOS_CLIENTLOGIN_LEN);

        byte[] Msgbuff = new byte[NetProtocol.Protocol.CTOS_CLIENTLOGIN_LEN];
        object objMsg  = NetTools.BytesToStuct(Msgbuff, typeof(NetProtocol.CTOS_CLIENTLOGIN));

        NetProtocol.CTOS_CLIENTLOGIN pMsg = (NetProtocol.CTOS_CLIENTLOGIN)objMsg;
        pMsg.PlayerName = NetTools.CodeBytes(Name, NetProtocol.ConstVar.ZZ_NAME_MAX + 3);
        pMsg.playerUID  = 1001;
        byte[] ReadMsgbuff = NetTools.GetBytes(pMsg);

        byte[] PacketBuff = new byte[NetProtocol.Protocol.CTOS_CLIENTLOGIN_LEN + headBuff.Length];
        str.Write(headBuff, 0, headBuff.Length);
        str.Write(ReadMsgbuff, 0, ReadMsgbuff.Length);
        str.Position = 0;
        int r = str.Read(PacketBuff, 0, PacketBuff.Length);

        if (r > 0)
        {
            clientSocket.Send(PacketBuff, PacketBuff.Length, SocketFlags.None);
        }
        return;
    }
Example #6
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 #7
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 #8
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;
        }
    }