示例#1
0
 public void Disconnect()
 {
     if (this.client != null)
     {
         this.client.Disconnect(); this.client.Dispose(); this.client = null;
     }
     if (this.listener != null)
     {
         this.listener.Disconnect(); this.listener.Dispose(); this.listener = null;
     }
     if (this.mreHasMsg != null)
     {
         this.mreHasMsg.Dispose();
     }
 }
        public void RunAsyn()
        {
            CtkLog.RegisterEveryLogWrite((ss, ea) =>
            {
                var now = DateTime.Now;
                var sb  = new StringBuilder();
                sb.AppendFormat("[{0}] ", now.ToString("yyyyMMdd HH:mm:ss"));
                sb.AppendFormat("{0} ", ea.Message);
                sb.AppendFormat("{0}", ea.Exception.StackTrace);
                CtkLog.InfoNs(this, sb.ToString());
            });



            DateTime?prevTime = DateTime.Now;

            this.listener = new CtkNonStopTcpListener("127.0.0.1", 5003);
            listener.NonStopConnectAsyn();
            var rnd = new Random((int)DateTime.Now.Ticks);

            listener.EhFirstConnect += (ss, ee) =>
            {
                var myea = ee as CtkNonStopTcpStateEventArgs;
                var sb   = new StringBuilder();
                sb.Append("evtFirstConnect:\n");
                sb.Append(this.CmdState());
                CtkLog.InfoNs(this, sb.ToString());
            };
            listener.EhDataReceive += (ss, ee) =>
            {
                var myea      = ee as CtkNonStopTcpStateEventArgs;
                var ctkBuffer = myea.TrxMessageBuffer;
                var msg       = Encoding.UTF8.GetString(ctkBuffer.Buffer, ctkBuffer.Offset, ctkBuffer.Length);
                if (!msg.Contains("\n"))
                {
                    return;
                }
                var sb = new StringBuilder();
                sb.Append("cmd -respData -svid 1 -data ");
                sb.Append(rnd.NextDouble());



                sb.AppendLine();

                myea.WriteMsg(sb.ToString());
            };
        }
示例#3
0
        public void ReloadListener()
        {
            if (this.listener != null)
            {
                this.listener.Disconnect();
            }
            this.listener                 = new CtkNonStopTcpListener();
            this.listener.localEP         = this.LocalEndPoint;
            this.listener.EhFirstConnect += (sender, e) =>
            {
                var ea = e as CtkNonStopTcpStateEventArgs;
                this.ActiveWorkClient = ea.workClient;
                //this.listener.CleanExclude(this.activeWorkTcpClient);
                this.OnFirstConnect(e);
            };
            this.listener.EhFailConnect += (sender, e) => this.OnFailConnect(e);
            this.listener.EhDisconnect  += (sender, e) => this.OnDisconnect(e);
            this.listener.EhDataReceive += (sender, e) => this.OnDataReceive(e);

            this.listener.IntervalTimeOfConnectCheck = this.IntervalTimeOfConnectCheck;
        }
示例#4
0
        public void RunAsyn()
        {
            CtkLog.RegisterEveryLogWrite((ss, ea) =>
            {
                var now = DateTime.Now;
                var sb  = new StringBuilder();
                sb.AppendFormat("[{0}] ", now.ToString("yyyyMMdd HH:mm:ss"));
                sb.AppendFormat("{0} ", ea.Message);
                sb.AppendFormat("{0}", ea.Exception.StackTrace);
                CtkLog.InfoNs(this, sb.ToString());
            });


            var len        = 512;
            var sampleRate = 512.0;

            var sin1      = new DenseVector(Generate.Sinusoidal(len, sampleRate, 10.0, 1.0));
            var sin2      = new DenseVector(Generate.Sinusoidal(len, sampleRate, 60.0, 0.5));
            var wave      = sin1 + sin2;
            var waveIndex = 0;


            DateTime?prevTime = DateTime.Now;

            this.listener = new CtkNonStopTcpListener("127.0.0.1", 5003);
            listener.NonStopConnectAsyn();

            listener.EhFirstConnect += (ss, ee) =>
            {
                var myea = ee as CtkNonStopTcpStateEventArgs;
                var sb   = new StringBuilder();
                sb.Append("evtFirstConnect:\n");
                sb.Append(this.CmdState());
                CtkLog.InfoNs(this, sb.ToString());
            };
            listener.EhDataReceive += (ss, ee) =>
            {
                var myea      = ee as CtkNonStopTcpStateEventArgs;
                var ctkBuffer = myea.TrxMessageBuffer;
                var msg       = Encoding.UTF8.GetString(ctkBuffer.Buffer, ctkBuffer.Offset, ctkBuffer.Length);
                if (!msg.Contains("\n"))
                {
                    return;
                }
                var sb = new StringBuilder();
                sb.Append("cmd -respData -svid 0 -data");

                var now = DateTime.Now;
                var ts  = now - prevTime.Value;
                prevTime = now;

                var limit = ts.Ticks * 1.0 / TimeSpan.TicksPerSecond * sampleRate;
                if (limit <= 0)
                {
                    limit = 1;
                }
                if (ts.TotalMilliseconds > 500)
                {
                    limit = 1;
                }

                for (var idx = 0; idx < limit; idx++)
                {
                    sb.AppendFormat(" {0}", wave[waveIndex++]);
                    if (waveIndex >= wave.Count)
                    {
                        waveIndex = 0;
                    }
                }
                sb.AppendLine();

                myea.WriteMsg(sb.ToString());
            };
        }