コード例 #1
0
ファイル: AppService.cs プロジェクト: intotf/C-Fiddler
        /// <summary>
        /// 启动服务
        /// </summary>
        /// <param name="hostControl"></param>
        /// <returns></returns>
        public bool Start(HostControl hostControl)
        {
            CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-US");

            var httpMiddleware = Listener.WsListener.Use <HttpMiddleware>();

            Listener.WsListener.Use <JsonWebSocketMiddleware>();
            httpMiddleware.MIMECollection.Add(".woff", ".woff");
            httpMiddleware.MIMECollection.Add(".woff2", ".woff2");
            httpMiddleware.MIMECollection.Add(".ttf", ".ttf");

            var ower = TcpSnapshot.Snapshot().FirstOrDefault(item => item.Port == this.Port);

            if (ower != null)
            {
                ower.Kill();
            }

            Listener.WsListener.Start(this.Port);

            new TimerRun(ConfigurationManager.AppSettings["AutoTime"]);
            //#region 代理服务
            //// 请求前
            //FiddlerApplication.BeforeRequest += (session) =>
            //{
            //    //Console.WriteLine($"{session.clientIP}-> {session.fullUrl}");
            //    session.bBufferResponse = true;

            //    // 首页重定向
            //    var uri = new Uri(session.fullUrl);
            //    if (uri.Port == ProxyPort || uri.Port == Port)
            //    {
            //        session.host = $"{uri.Host}:{ Port }";
            //        AllSessions.Add(session);
            //    }
            //    //Console.WriteLine(session.url);
            //};

            //// 收到服务端的回复
            //FiddlerApplication.BeforeResponse += (session) =>
            //{
            //    try
            //    {
            //        FiddlerProcessor.OnResponse(session);
            //    }
            //    catch (Exception ex)
            //    {
            //        Console.WriteLine(ex.Message);
            //    }
            //};

            //// 配置代理服务器
            //Cert.SetRootCertificate();
            //CONFIG.IgnoreServerCertErrors = true;

            //FiddlerApplication.Prefs.SetBoolPref("fiddler.network.streaming.abortifclientaborts", true);
            //FiddlerApplication.Startup(ProxyPort, FiddlerCoreStartupFlags.AllowRemoteClients | FiddlerCoreStartupFlags.DecryptSSL);
            //#endregion
            return(true);
        }
コード例 #2
0
        public void OnConnectTest()
        {
            var ower = TcpSnapshot.Snapshot().Where(item => item.Port == 6611).FirstOrDefault();

            if (ower != null)
            {
                ower.Kill();
            }

            MyTcpServerBase target = new MyTcpServerBase(); // TODO: 初始化为适当的值

            target.StartListen(6611);

            var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            socket.Connect(new System.Net.IPEndPoint(IPAddress.Loopback, 6611));
            Thread.Sleep(50);
            Assert.IsTrue(target.ConnectTimes == 1);
            Assert.IsTrue(target.AllSessions.Count() == 1);
            Assert.IsTrue(target.ExtraState.FreeSessionCount == 0);


            var socket2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            socket2.Connect(new System.Net.IPEndPoint(IPAddress.Loopback, 6611));
            Thread.Sleep(50);
            Assert.IsTrue(target.ConnectTimes == 2);
            Assert.IsTrue(target.AllSessions.Count() == 2);
            Assert.IsTrue(target.ExtraState.FreeSessionCount == 0);


            socket.Dispose();
            Thread.Sleep(50);
            Assert.IsTrue(target.DisConnectTimes == 1);
            Assert.IsTrue(target.AllSessions.Count() == 1);
            Assert.IsTrue(target.ExtraState.FreeSessionCount == 1);

            socket2.Dispose();
            Thread.Sleep(50);
            Assert.IsTrue(target.DisConnectTimes == 2);
            Assert.IsTrue(target.AllSessions.Count() == 0);
            Assert.IsTrue(target.ExtraState.FreeSessionCount == 2);

            target.Dispose();
        }
コード例 #3
0
        public bool Start(HostControl hostControl)
        {
            var port = int.Parse(ConfigurationManager.AppSettings["Port"]);
            var ower = TcpSnapshot.Snapshot().FirstOrDefault(item => item.Port == port);

            if (ower != null)
            {
                Console.WriteLine("{0} 端口{1}被进程{2}占用 ...", DateTime.Now, port, ower.OwerPid);
                ower.Kill();
            }
            listener.Use <HttpMiddleware>();
            listener.Use <JsonWebSocketMiddleware>().GlobalFilters.Add(new Filter());
            listener.KeepAlivePeriod = TimeSpan.FromSeconds(30);
            listener.Start(port);
            Console.WriteLine("{0} 监听端口{1}成功 ...", DateTime.Now, port);

            return(true);
        }
コード例 #4
0
ファイル: ListenerControl.cs プロジェクト: intotf/WebSocket
        /// <summary>
        /// 启动服务
        /// </summary>
        /// <param name="hostControl"></param>
        /// <returns></returns>
        public bool Start(HostControl hostControl)
        {
            var port = int.Parse(ConfigurationManager.AppSettings["Port"]);
            var ower = TcpSnapshot.Snapshot().FirstOrDefault(item => item.Port == port);

            if (ower != null)
            {
                ower.Kill();
            }

            listener.Use <FlexPolicyMiddleware>();
            listener.Use <JsonWebSocketMiddleware>().GlobalFilters.Add(new WebSockeGlobalFilter());
            listener.Use <HttpMiddleware>();
            listener.Use <FastMiddleware>();

            listener.UsePlug <WebSocketPlug>();
            listener.Start(port);
            return(true);
        }