Ejemplo n.º 1
0
        private void CmdSendReceiver()
        {
            try
            {
                InterceptRequest req = new InterceptRequest() { cmd = 0, extnum = string.Empty };
                InterceptResponse res;
                int count = 0;

                while (IsSockCmdSrvStarted)
                {
                    byte[] bytes = util.ObjectToByteArray(req);

                    count = 0;
                    count = sockCmdSrv.ReceiveFrom(bytes, SocketFlags.None, ref remoteepCmd);

                    if (count == 0) return;

                    req = util.ByteArrayToObject<InterceptRequest>(bytes);

                    switch (req.cmd)
                    {
#if false
                        case 1:
                            // 내선 전화 상태 요청
                            __res = new InterceptResponse() { cmd = __req.cmd, result = 1, innertels = _innertelstatus };
                            //__bytes = util.GetBytes(__res);
                            __bytes = util.ObjectToByteArray(__res);
                            __count = _sockCmdSrv.SendTo(__bytes, _remoteepCmd);
                            break;
#endif
                        case 2:
                            // RTP Redirect 요청
                            res = new InterceptResponse() { cmd = req.cmd, result = 1 };
                            bytes = util.ObjectToByteArray(res);
                            count = sockCmdSrv.SendTo(bytes, remoteepCmd);
                            break;
                        case 3:
                            // RTP Redirect 해제 요청
                            res = new InterceptResponse() { cmd = req.cmd, result = 1 };
                            bytes = util.ObjectToByteArray(res);
                            count = sockCmdSrv.SendTo(bytes, remoteepCmd);
                            break;
                        case 4:
                            // 파일 Stream 요청
                            res = new InterceptResponse() { cmd = req.cmd, result = 1 };
                            bytes = util.ObjectToByteArray(res);
                            count = sockCmdSrv.SendTo(bytes, remoteep);
                            break;
                        case 5:
                            // 파일 Down 요청
                            res = new InterceptResponse() { cmd = req.cmd, result = 1 };
                            bytes = util.ObjectToByteArray(res);
                            count = sockCmdSrv.SendTo(bytes, remoteep);
                            break;
                    }
                }
            }
            catch (SocketException se)
            {
                throw se;
            }
        }
Ejemplo n.º 2
0
        private void CmdSendReceiver()
        {
            try
            {
                InterceptRequest req = new InterceptRequest()
                {
                    cmd = 0, extnum = string.Empty
                };
                InterceptResponse res;
                int count = 0;

                while (IsSockCmdSrvStarted)
                {
                    byte[] bytes = util.ObjectToByteArray(req);

                    count = 0;
                    count = sockCmdSrv.ReceiveFrom(bytes, SocketFlags.None, ref remoteepCmd);

                    if (count == 0)
                    {
                        return;
                    }

                    req = util.ByteArrayToObject <InterceptRequest>(bytes);

                    switch (req.cmd)
                    {
#if false
                    case 1:
                        // 내선 전화 상태 요청
                        __res = new InterceptResponse()
                        {
                            cmd = __req.cmd, result = 1, innertels = _innertelstatus
                        };
                        //__bytes = util.GetBytes(__res);
                        __bytes = util.ObjectToByteArray(__res);
                        __count = _sockCmdSrv.SendTo(__bytes, _remoteepCmd);
                        break;
#endif
                    case 2:
                        // RTP Redirect 요청
                        res = new InterceptResponse()
                        {
                            cmd = req.cmd, result = 1
                        };
                        bytes = util.ObjectToByteArray(res);
                        count = sockCmdSrv.SendTo(bytes, remoteepCmd);
                        break;

                    case 3:
                        // RTP Redirect 해제 요청
                        res = new InterceptResponse()
                        {
                            cmd = req.cmd, result = 1
                        };
                        bytes = util.ObjectToByteArray(res);
                        count = sockCmdSrv.SendTo(bytes, remoteepCmd);
                        break;

                    case 4:
                        // 파일 Stream 요청
                        res = new InterceptResponse()
                        {
                            cmd = req.cmd, result = 1
                        };
                        bytes = util.ObjectToByteArray(res);
                        count = sockCmdSrv.SendTo(bytes, remoteep);
                        break;

                    case 5:
                        // 파일 Down 요청
                        res = new InterceptResponse()
                        {
                            cmd = req.cmd, result = 1
                        };
                        bytes = util.ObjectToByteArray(res);
                        count = sockCmdSrv.SendTo(bytes, remoteep);
                        break;
                    }
                }
            }
            catch (SocketException se)
            {
                throw se;
            }
        }
Ejemplo n.º 3
0
        private void RtpRedirectSendReceiver()
        {
            try
            {
                InterceptRequest req;
                int count = 0;

                while (IsSockInterceptorStarted)
                {
                    req = new InterceptRequest() { cmd = 0, extnum = "0000" };
                    byte[] bytes = util.ObjectToByteArray(req);

                    count = 0;
                    count = sockRTPSrv.ReceiveFrom(bytes, SocketFlags.None, ref remoteepRedirect);

                    if (count == 0) return;

                    req = util.ByteArrayToObject<InterceptRequest>(bytes);

                    InterceptorClient tmpObj = null;
                    int idx = 0;
                    switch (req.cmd)
                    {
                        case 2:
                            // RTP 클라이언트 등록 요청
                            var tmpList = rtpRedirectClientList.Where(x => x.ClientIPEP.Address == ((IPEndPoint)remoteep).Address);

                            if (tmpList.Count() == 0)
                            {
                                lock (rtpRedirectClientList)
                                {
                                    rtpRedirectClientList.Add(new InterceptorClient() { ClientIPEP = (IPEndPoint)remoteep, ClientRegdate = DateTime.Now, ReqtelNum = req.extnum });
                                }
                            }
                            else
                            {
                                lock (rtpRedirectClientList)
                                {
                                    tmpObj = rtpRedirectClientList.FirstOrDefault(x => x.ClientIPEP.Address == ((IPEndPoint)remoteep).Address);
                                    idx = rtpRedirectClientList.IndexOf(tmpObj);
                                    rtpRedirectClientList[idx].ClientRegdate = DateTime.Now;
                                    rtpRedirectClientList[idx].ReqtelNum = req.extnum;
                                }
                            }
                            break;
                        case 3:
                            // RTP 클라이언트 등록 해제 요청
                            tmpObj = rtpRedirectClientList.FirstOrDefault(x => x.ClientIPEP.Address == ((IPEndPoint)remoteep).Address);
                            lock (rtpRedirectClientList)
                            {
                                rtpRedirectClientList.Remove(tmpObj);
                            }
                            break;
                    }
                }
            }
            catch (SocketException e)
            {
                throw e;
            }
        }
Ejemplo n.º 4
0
        private void RtpRedirectSendReceiver()
        {
            try
            {
                InterceptRequest req;
                int count = 0;

                while (IsSockInterceptorStarted)
                {
                    req = new InterceptRequest()
                    {
                        cmd = 0, extnum = "0000"
                    };
                    byte[] bytes = util.ObjectToByteArray(req);

                    count = 0;
                    count = sockRTPSrv.ReceiveFrom(bytes, SocketFlags.None, ref remoteepRedirect);

                    if (count == 0)
                    {
                        return;
                    }

                    req = util.ByteArrayToObject <InterceptRequest>(bytes);

                    InterceptorClient tmpObj = null;
                    int idx = 0;
                    switch (req.cmd)
                    {
                    case 2:
                        // RTP 클라이언트 등록 요청
                        var tmpList = rtpRedirectClientList.Where(x => x.ClientIPEP.Address == ((IPEndPoint)remoteep).Address);

                        if (tmpList.Count() == 0)
                        {
                            lock (rtpRedirectClientList)
                            {
                                rtpRedirectClientList.Add(new InterceptorClient()
                                {
                                    ClientIPEP = (IPEndPoint)remoteep, ClientRegdate = DateTime.Now, ReqtelNum = req.extnum
                                });
                            }
                        }
                        else
                        {
                            lock (rtpRedirectClientList)
                            {
                                tmpObj = rtpRedirectClientList.FirstOrDefault(x => x.ClientIPEP.Address == ((IPEndPoint)remoteep).Address);
                                idx    = rtpRedirectClientList.IndexOf(tmpObj);
                                rtpRedirectClientList[idx].ClientRegdate = DateTime.Now;
                                rtpRedirectClientList[idx].ReqtelNum     = req.extnum;
                            }
                        }
                        break;

                    case 3:
                        // RTP 클라이언트 등록 해제 요청
                        tmpObj = rtpRedirectClientList.FirstOrDefault(x => x.ClientIPEP.Address == ((IPEndPoint)remoteep).Address);
                        lock (rtpRedirectClientList)
                        {
                            rtpRedirectClientList.Remove(tmpObj);
                        }
                        break;
                    }
                }
            }
            catch (SocketException e)
            {
                throw e;
            }
        }