Example #1
0
        void osipCallClose(eXosip.Event eXosipEvent)
        {
            IntPtr      ptr;
            XmlDocument Request;
            Socket      exoSocket;
            SipSocket   temp;

            osip.From pFrom = osip.Message.GetFrom(eXosipEvent.request);
            osip.From pTo   = osip.Message.GetTo(eXosipEvent.request);
            osip.URI  uri   = (osip.URI)Marshal.PtrToStructure(osip.From.GetURL(pTo.url), typeof(osip.URI));
            string    name  = osip.URI.ToString(pTo.url);
            string    id    = name.Substring(4, name.IndexOf('@') - 4);

            if ((exoSocket = SipSocket.FindSocket(id.Substring(0, 6))) == null)
            {
                eXosip.Call.SendAnswer(eXosipEvent.tid, 404, IntPtr.Zero);
                eXosip.Unlock();
                return;
            }
            /*----------------------------分割线-----------------------------*/
            Request = InterfaceC.StopMediaReq("0000000000000000", "6101010000000001", "0");//提取参数并转为C类接口格式

            temp = SipSocket.FindSipSocket(exoSocket);
            try
            {
                temp.SendRequest(Request);
            }
            catch (SocketException ex)
            {
                System.Console.WriteLine(ex);
            }

            SipSocket.CleanResult(exoSocket);
        }
Example #2
0
 public ThirdController(ILogger <ThirdController> logger, IConfiguration configuration, InterfaceA interfaceA, InterfaceB interfaceB, InterfaceC interfaceC)
 {
     _logger        = logger;
     _configuration = configuration;
     _interfaceA    = interfaceA;
     _interfaceB    = interfaceB;
     _interfaceC    = interfaceC;
 }
Example #3
0
        private void Combo_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            SIPTools  sip  = new SIPTools();
            SipSocket temp = new SipSocket(testsocket, sip);
            string    seleRequest;

            seleRequest = Combo.SelectedValue.ToString().Substring(38);
            switch (seleRequest)
            {
            case "StartMediaReq":
                temp.SendRequest(InterfaceC.StartMediaReq("6101010000000000", "6101010000000001", "63", "1", "0", "", "", "1"));
                break;

            case "StopMediaReq":
                temp.SendRequest(InterfaceC.StopMediaReq("0000000000000000", "6101010000000001", "0"));
                break;

            case "QueryHistoryFiles":
                temp.SendRequest(InterfaceC.QueryHistoryFiles("0000000000000000", "6101010000000001", "0", "1111", "2015-03-22 12:22:33", "2015-03-22 12:42:33"));
                break;

            case "StartPlayBack":
                temp.SendRequest(InterfaceC.StartPlayBack("0000000000000000", "6101010000000001", "0", "2015-03-22 12:22:33", "2015-03-22 12:42:33", 0, "192.168.1.1", "15000", 1, 1));
                break;

            case "ControlFileBack":
                temp.SendRequest(InterfaceC.ControlFileBack("00000000000", "00038478", "UP", 0));
                break;

            case "StartHisLoad":
                temp.SendRequest(InterfaceC.StartHisLoad("0000000000000000", "6101010000000001", "0", "2015-03-22 12:22:33", "2015-03-22 12:42:33", 0, "192.168.1.1", "15000", 1, 1));
                break;

            case "ReqCamResState":
                string[] str = { "000000", "1111111", "222222" };
                temp.SendRequest(InterfaceC.ReqCamResState("0000000000000000", str, 1));
                break;

            case "GetUserCurState":
                temp.SendRequest(InterfaceC.GetUserCurState("0000000000000000", "6101010000000001"));
                break;

            case "SetUserCamManage":
                string[] cameId = { "00000", "111111" }, id = { "222222", "333333" };
                temp.SendRequest(InterfaceC.SetUserCamManage("0000000000000000", "6101010000000001", 0, "2015-03-22 12:22:33", "2015-03-22 12:42:33", "2015-03-22 11:42:33", cameId, 2, id, 2));
                break;

            case "AlarmResSubscribe":
                string[] type = { "666666", "4444444" }, id_0 = { "00000", "11111" };
                temp.SendRequest(InterfaceC.AlarmResSubscribe("0000000000000000", "6101010000000001", 0, id_0, type, 2));
                break;

            default:
                break;
            }
        }
Example #4
0
        void recvProc(IAsyncResult ar)//异步Receive
        {
            stateobject state = (stateobject)ar.AsyncState;
            XmlDocument Doc   = new XmlDocument();
            SipSocket   temp;

            if (state.isClosed)
            {
                return;
            }
            try
            {
                state.socket.BeginReceive(state.recv, 0, state.BufferSize, 0, new AsyncCallback(recvProc), state);
                int i = state.socket.EndReceive(ar);
                this.Dispatcher.BeginInvoke(new Action(() => Result.AppendText(Encoding.GetEncoding("GB2312").GetString(state.recv, 0, i))));
                SipSocket.Add(state.socket, new SIPTools(state.recv, i));
                temp = SipSocket.FindSipSocket(state.socket);
                string[] result;
                Doc = SIPTools.XmlExtract(recv, i);
                if (Doc == null)
                {
                    return;
                }
                if (InterfaceC.IsRequest(Doc))
                {
                    temp.SendResponse(InterfaceC.Request(Doc));
                }
                else
                {
                    result = InterfaceC.Response(Doc);
                    if (result != null)
                    {
                        SipSocket.InsertResult(state.socket, result);
                        for (int k = 0; k < result.Length; k++)
                        {
                            Console.WriteLine(result[k]);
                        }
                    }
                }
            }
            catch (SocketException e)
            {
                state.isClosed = true;
                state.socket.Dispose();
                Console.WriteLine(e.Message);
                return;
            }
            catch (XmlException e)
            {
                Console.WriteLine(e.Message);
                return;
            }
        }
Example #5
0
 static void Main(string[] args)
 {
     try
     {
         IServiceCollection services = new ServiceCollection();
         services.AddTransient <InterfaceA, ServiceA>();
         services.AddSingleton <InterfaceB, ServiceB>(); //进程单例
         services.AddScoped <InterfaceC, ServiceC>();    //作用域单例
         var container = services.BuildServiceProvider();
         {
             System.Console.WriteLine("-----------------------1-----------");
             var A1 = container.GetService <InterfaceA>();
             var A2 = container.GetService <InterfaceA>();
             System.Console.WriteLine(A1.Equals(A2)); System.Console.WriteLine("-----------------------2-----------");
             var B1 = container.GetService <InterfaceB>();
             var B2 = container.GetService <InterfaceB>();
             System.Console.WriteLine(B1.Equals(B2)); System.Console.WriteLine("-----------------------3-----------");
             var        C1 = container.GetService <InterfaceC>();
             var        C2 = container.GetService <InterfaceC>();
             var        C3 = container.CreateScope().ServiceProvider.GetService <InterfaceC>();
             var        C4 = container.CreateScope().ServiceProvider.GetService <InterfaceC>();
             InterfaceC C5 = null, C6 = null, C7 = null;
             Task.Run(() =>
             {
                 C5 = container.GetService <InterfaceC>();
             });
             Task.Run(() =>
             {
                 C6 = container.GetService <InterfaceC>();
             }).ContinueWith(t =>
             {
                 C7 = container.GetService <InterfaceC>();
             });
             //Thread.Sleep(2000);
             System.Console.WriteLine("-----------------------aaa-----------");
             //System.Console.WriteLine(C1.Equals(C2));
             //System.Console.WriteLine(C1.Equals(C3));
             //System.Console.WriteLine(C1.Equals(C4));
             //System.Console.WriteLine(C2.Equals(C4));
             //System.Console.WriteLine(C3.Equals(C5));
             //System.Console.WriteLine(C3.Equals(C6));
             //System.Console.WriteLine(C3.Equals(C7));
             System.Console.WriteLine(C5.Equals(C6));
             System.Console.WriteLine(C5.Equals(C7));
             System.Console.WriteLine(C6.Equals(C7));
             System.Console.ReadLine();
         }
     }
     catch (Exception ex)
     {
         System.Console.WriteLine(ex.ToString());
     }
 }
Example #6
0
        private void Start_Click_1(object sender, RoutedEventArgs e)//绑定套接字等初始化
        {
            ipEnd  = new IPEndPoint(IPAddress.Any, 15000);
            socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            socket.Bind(ipEnd);
            socket.Listen(20);
            Database = new DataBase();
            C        = new InterfaceC(Database);
            stateobject mainObject = new stateobject();

            mainObject.socket = socket;
            socket.BeginAccept(new AsyncCallback(AsyncAccept), mainObject);
            Result.AppendText("Start listening...\r\n");
            exosip      = new eXosip();
            snoopThread = new Thread(Snoop);
            snoopThread.IsBackground = true;
            snoopThread.Start();
            Combo.IsEnabled = true;
        }
Example #7
0
 public ClassD(InterfaceC c)
 {
 }
 public ClassD(InterfaceC c)
 {
 }
 public ClassB(InterfaceC @interface)
 {
 }
Example #10
0
        //private void Test_Click_1(object sender, RoutedEventArgs e)//测试用
        //{
        //    XmlDocument Request;
        //    Socket exoSocket;
        //    SipSocket temp;
        //    string[] result = new string[10];
        //    System.Timers.Timer timer = new System.Timers.Timer(2000);
        //    osip.From pFrom = osip.Message.GetFrom(eXosipEvent.request);
        //    osip.From pTo = osip.Message.GetTo(eXosipEvent.request);
        //    osip.URI uri = (osip.URI)Marshal.PtrToStructure(osip.From.GetURL(pTo.url), typeof(osip.URI));
        //    string name = osip.URI.ToString(pTo.url);
        //    string id = name.Substring(4, name.IndexOf('@') - 4);
        //    if ((exoSocket = SipSocket.FindSocket(id.Substring(0, 6))) == null)
        //    {
        //        eXosip.Call.SendAnswer(eXosipEvent.tid, 404, IntPtr.Zero);
        //        eXosip.Unlock();
        //        return;
        //    }
        //    /*----------------------------分割线-----------------------------*/
        //    temp = SipSocket.FindSipSocket(exoSocket);
        //    Request = InterfaceC.StopMediaReq("0000000000000000", "6101010000000001", "0");//提取参数并转为C类接口格式
        //    SipSocket.CleanResult(exoSocket);
        //    temp.SendRequest(Request);
        //    result = WaitForResult(testsocket, timer, 2000);

        //    if (result != null)
        //        for (int k = 0; k < result.Length; k++)
        //            Console.WriteLine(result[k]);

        //}

        private void Test_Click_1(object sender, RoutedEventArgs e)//测试用
        {
            byte[]    recv   = new byte[2048];
            string[]  result = new string[10];
            SipSocket temp   = SipSocket.FindSipSocket(testsocket);

            System.Timers.Timer timer = new System.Timers.Timer(2000);
            SipSocket.CleanResult(testsocket);
            switch (Combo.SelectionBoxItem.ToString())
            {
            case "StartMediaReq":
                temp.SendRequest(InterfaceC.StartMediaReq("6101010000000000", "6101010000000001", "63", "1", "0", "", "", "1"));
                break;

            case "StopMediaReq":
                temp.SendRequest(InterfaceC.StopMediaReq("0000000000000000", "6101010000000001", "0"));
                break;

            case "QueryHistoryFiles":
                temp.SendRequest(InterfaceC.QueryHistoryFiles("0000000000000000", "6101010000000001", "0", "1111", "2015-03-22 12:22:33", "2015-03-22 12:42:33"));
                break;

            case "StartPlayBack":
                temp.SendRequest(InterfaceC.StartPlayBack("0000000000000000", "6101010000000001", "0", "2015-03-22 12:22:33", "2015-03-22 12:42:33", 0, "192.168.1.1", "15000", 1, 1));
                break;

            case "ControlFileBack":
                temp.SendRequest(InterfaceC.ControlFileBack("00000000000", "00038478", "UP", 0));
                break;

            case "StartHisLoad":
                temp.SendRequest(InterfaceC.StartHisLoad("0000000000000000", "6101010000000001", "0", "2015-03-22 12:22:33", "2015-03-22 12:42:33", 0, "192.168.1.1", "15000", 1, 1));
                break;

            case "ReqCamResState":
                string[] str = { "000000", "1111111", "222222" };
                temp.SendRequest(InterfaceC.ReqCamResState("0000000000000000", str, 1));
                break;

            case "GetUserCurState":
                temp.SendRequest(InterfaceC.GetUserCurState("0000000000000000", "6101010000000001"));
                break;

            case "SetUserCamManage":
                string[] cameId = { "00000", "111111" }, id = { "222222", "333333" };
                temp.SendRequest(InterfaceC.SetUserCamManage("0000000000000000", "6101010000000001", 0, "2015-03-22 12:22:33", "2015-03-22 12:42:33", "2015-03-22 11:42:33", cameId, 2, id, 2));
                break;

            case "AlarmResSubscribe":
                string[] type = { "666666", "4444444" }, id_0 = { "00000", "11111" };
                temp.SendRequest(InterfaceC.AlarmResSubscribe("0000000000000000", "6101010000000001", 0, id_0, type, 2));
                break;

            default:
                break;
            }

            result = WaitForResult(testsocket, timer, 2000);

            if (result != null)
            {
                for (int k = 0; k < result.Length; k++)
                {
                    Console.WriteLine(result[k]);
                }
            }
            //XXX.Send(InterfaceC.StartMediaReq("127.0.0.1", "12000", "6100011201000102", "6100011201000102", "1", "1", "0", "", "", "1"));
        }
Example #11
0
        void osipCallMessage(eXosip.Event eXosipEvent)
        {
            IntPtr      ptr;
            XmlDocument TempDoc = new XmlDocument();
            XmlDocument Request;
            Socket      exoSocket;
            SipSocket   temp;

            string[]            result = new string[10];
            System.Timers.Timer timer  = new System.Timers.Timer(2000);
            ptr = osip.Message.GetContentType(eXosipEvent.request);
            if (ptr == IntPtr.Zero)
            {
                return;
            }
            osip.ContentType content = (osip.ContentType)Marshal.PtrToStructure(ptr, typeof(osip.ContentType));
            ptr = osip.Message.GetBody(eXosipEvent.request);
            if (ptr == IntPtr.Zero)
            {
                return;
            }

            osip.From pTo      = osip.Message.GetTo(eXosipEvent.request);
            osip.From pFrom    = osip.Message.GetFrom(eXosipEvent.request);
            osip.URI  uriTo    = (osip.URI)Marshal.PtrToStructure(osip.From.GetURL(pTo.url), typeof(osip.URI));
            osip.URI  uriFrom  = (osip.URI)Marshal.PtrToStructure(osip.From.GetURL(pFrom.url), typeof(osip.URI));
            string    name     = osip.URI.ToString(pTo.url);
            string    name2    = osip.URI.ToString(pFrom.url);
            string    resId    = name.Substring(4, name.IndexOf('@') - 4);
            string    userCode = name2.Substring(4, name2.IndexOf('@') - 4);
            string    userId   = resId.Substring(0, 10) + userCode;

            if ((exoSocket = SipSocket.FindSocket(resId.Substring(0, 6))) == null)
            {
                eXosip.Call.SendAnswer(eXosipEvent.tid, 404, IntPtr.Zero);
                eXosip.Unlock();
                return;
            }

            osip.Body data = (osip.Body)Marshal.PtrToStructure(ptr, typeof(osip.Body));
            if (Marshal.PtrToStringAnsi(content.type) != "application" ||
                Marshal.PtrToStringAnsi(content.subtype) != "xml")
            {
                return;
            }
            string xml = Marshal.PtrToStringAnsi(data.body);

            Console.Write(xml);
            /*----------------------------分割线-----------------------------*/
            TempDoc.LoadXml(xml);
            temp    = SipSocket.FindSipSocket(exoSocket);
            Request = InterfaceC.CallMessageTranslate(TempDoc, resId, userId);//提取参数并转为C类接口格式
            SipSocket.CleanResult(exoSocket);
            temp.SendRequest(Request);
            result = WaitForResult(testsocket, timer, 2000);

            if (result != null)
            {
                for (int k = 0; k < result.Length; k++)
                {
                    Console.WriteLine(result[k]);
                }
            }
            temp = SipSocket.FindSipSocket(exoSocket);
            temp.SendRequest(Request);
        }
Example #12
0
        private void osipCallInvite(eXosip.Event eXosipEvent)
        {
            Socket exoSocket;

            eXosip.Lock();
            byte[]      recv    = new byte[2048];
            XmlDocument Request = new XmlDocument();;
            SipSocket   temp;

            System.Timers.Timer timer  = new System.Timers.Timer(2000);
            string[]            result = new string[10];
            eXosip.Call.SendAnswer(eXosipEvent.tid, 180, IntPtr.Zero);
            IntPtr sdp = eXosip.GetRemoteSdp(eXosipEvent.did);

            if (sdp == IntPtr.Zero)
            {
                eXosip.Call.SendAnswer(eXosipEvent.tid, 400, IntPtr.Zero);
                eXosip.Unlock();
                return;
            }

            osip.From pTo      = osip.Message.GetTo(eXosipEvent.request);
            osip.From pFrom    = osip.Message.GetFrom(eXosipEvent.request);
            osip.URI  uriTo    = (osip.URI)Marshal.PtrToStructure(osip.From.GetURL(pTo.url), typeof(osip.URI));
            osip.URI  uriFrom  = (osip.URI)Marshal.PtrToStructure(osip.From.GetURL(pFrom.url), typeof(osip.URI));
            string    name     = osip.URI.ToString(pTo.url);
            string    name2    = osip.URI.ToString(pFrom.url);
            string    resId    = name.Substring(4, name.IndexOf('@') - 4);
            string    userCode = name2.Substring(4, name2.IndexOf('@') - 4);
            string    userId   = resId.Substring(0, 10) + userCode;

            if ((exoSocket = SipSocket.FindSocket(resId.Substring(0, 6))) == null)
            {
                eXosip.Call.SendAnswer(eXosipEvent.tid, 404, IntPtr.Zero);
                eXosip.Unlock();
                return;
            }

            string sessionname = osip.SdpMessage.GetSessionName(sdp);

            //以下的接口中的数据均为伪造,未测试版本,缺失提取Xml信息的步骤
            if (sessionname == "RealTime")
            {
                Request = InterfaceC.StartMediaReq(resId, userId, "63", "1", "0", "", "", "1");
            }
            else if (sessionname == "PlayBack")
            {
                Request = InterfaceC.StartPlayBack(resId, userId, "63", "2015-03-22 22:33:22", "2015-03-22 23:44:22", 0, "192.168.1.1", "15000", 1, 0);
            }
            else if (sessionname == "DownLoad")
            {
                Request = InterfaceC.StartHisLoad(resId, userId, "63", "2015-03-22 22:33:22", "2015-03-22 23:44:22", 0, "192.168.1.1", "15000", 1, 0);//测试
            }
            else if (sessionname == "PlayBack")
            {
                Request = InterfaceC.StartPlayBack(resId, userId, "63", "2015-03-22 22:33:22", "2015-03-22 23:44:22", 0, "192.168.1.1", "15000", 1, 0);
            }
            else if (sessionname == "DownLoad")
            {
                Request = InterfaceC.StartHisLoad(resId, userId, "63", "2015-03-22 22:33:22", "2015-03-22 23:44:22", 0, "192.168.1.1", "15000", 1, 0);//测试
            }

            temp = SipSocket.FindSipSocket(exoSocket);
            temp.SendRequest(Request);
            timer.Elapsed += new System.Timers.ElapsedEventHandler(Tick);
            timer.Enabled  = true;
            while (true)
            {
                Request = InterfaceC.StartMediaReq(resId, userId, "63", "1", "0", "", "", "1");
            }


            temp = SipSocket.FindSipSocket(exoSocket);
            SipSocket.CleanResult(exoSocket);
            temp.SendRequest(Request);
            result = WaitForResult(testsocket, timer, 2000);

            if (result != null)
            {
                for (int k = 0; k < result.Length; k++)
                {
                    Console.WriteLine(result[k]);
                }
            }
            else
            {
                eXosip.Call.SendAnswer(eXosipEvent.tid, 404, IntPtr.Zero);
                eXosip.Unlock();
                return;
            }
            string sessionId      = osip.SdpMessage.GetSessionId(sdp);
            string sessionVersion = osip.SdpMessage.GetSessionVersion(sdp);
            IntPtr answer         = eXosip.Call.BuildAnswer(eXosipEvent.tid, 200);

            if (answer != IntPtr.Zero)
            {
                string tmp = string.Format(
                    "v=0\r\n" +
                    "o={0} {1} {2} IN IP4 {3}\r\n" +
                    "s={5}\r\n" +
                    "c=IN IP4 {3}\r\n" +
                    "t=0 0\r\n" +
                    "a=sendonly\r\n" +
                    "m=video {4} TCP H264\r\n" +
                    "a=setup:passive\r\n" +
                    "a=connection:new\r\n" +
                    "m=audio {4} TCP PCMA\r\n" +
                    "a=setup:passive\r\n" +
                    "a=connection:new\r\n",
                    resId,
                    sessionId,
                    sessionVersion,
                    result[1],
                    result[2],
                    sessionname);
                osip.Message.SetBody(answer, tmp);
                osip.Message.SetContentType(answer, "application/sdp");
                eXosip.Call.SendAnswer(eXosipEvent.tid, 200, answer);
                eXosip.Unlock();
            }
        }
Example #13
0
 public ImpB(InterfaceC interfaceC)
 {
     _interfaceC = interfaceC;
 }
Example #14
0
 public ClassB(InterfaceC @interface)
 {
 }