Example #1
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            try
            {
                //实例化10个服务器
                s1 = new TcpServerManager("0.0.0.0", 5555, "s1服务器");
                s2 = new TcpServerManager("0.0.0.0", 5556, "s2服务器");
                s3 = new TcpServerManager("0.0.0.0", 5557, "s3服务器");
                s4 = new TcpServerManager("0.0.0.0", 5558, "s4服务器");
                s5 = new TcpServerManager("0.0.0.0", 5559, "s5服务器");

                s6  = new TcpServerManager("0.0.0.0", 5560, "s6服务器");
                s7  = new TcpServerManager("0.0.0.0", 5561, "s7服务器");
                s8  = new TcpServerManager("0.0.0.0", 5562, "s8服务器");
                s9  = new TcpServerManager("0.0.0.0", 5563, "s9服务器");
                s10 = new TcpServerManager("0.0.0.0", 5564, "s10服务器");

                SetAppState(AppState.Started);
                // dtuDic = DTUUtil.getInstance().getDTUDic();
                dealThread = new Thread(new ThreadStart(MainThreadPool));
                dealThread.Start();
                //
                threadTimer = new System.Threading.Timer(new System.Threading.TimerCallback(MonitorTaskQueue), 0, 1000, 20);
            }
            catch (Exception ex)
            {
                AddMsg(ex.Message);
            }
        }
Example #2
0
        /// <summary>
        /// 開始
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected override void ButtonF1_Click(object sender, EventArgs e)
        {
            Logger.StartMethod(MethodBase.GetCurrentMethod().Name);
            base.ButtonF1_Click(sender, e);
            // ▼▼▼ 業務処理 ▼▼▼

            if (TcpServerUtil != null)
            {
                // 既に接続している場合、再接続前に破棄する
                TcpServerUtil.Dispose();
            }

            // Listen
            string ip = tboxIP.Text;

            int.TryParse(tboxPort.Text, out int port);
            TcpServerUtil = new TcpServerManager(ip, port);

            listViewLog.Items.Add($"Listenを開始しました。IP[{ip}] Port[{port}]");

            // Task停止用のトークン発行
            CancelTokenSource = new CancellationTokenSource();
            CancellationToken cToken = CancelTokenSource.Token;

            // Accept Loop Start
            acceptLoopTask = AcceptLoop(cToken);

            // ボタンの有効無効を設定
            SetButtonEnabled(ActionMode.Listen);
            // ▲▲▲ 業務処理 ▲▲▲
            Logger.EndMethod(MethodBase.GetCurrentMethod().Name);
        }
Example #3
0
        public Form1()
        {
            InitializeComponent();
            regSetting = new Reg("sfMinerDigger").In("Setting").In("vps");
            t          = new TcpServerManager()
            {
                NormalMessage = (s, x) => {
                    this.Invoke((EventHandler) delegate
                    {
                        var targetItem = GetItem(s.Ip);
                        if (targetItem != null)
                        {
                            if (x.Contains("heartBeat"))
                            {
                            }
                            else if (x.Contains("<connectCmdRequire>"))
                            {
                                targetItem.SubItems[3].Text = "初始化";
                                targetItem.SubItems[0].Text = HttpUtil.GetElementInItem(x, "connectCmdRequire");
                                s.ID           = HttpUtil.GetElementInItem(x, "clientDeviceId");
                                var clientName = regSetting.In(s.ID).GetInfo("clientName", targetItem.SubItems[0].Text);
                                s.Send(string.Format("<setClientName>{0}</setClientName>", clientName));                        //用于确认当前名称并初始化
                            }
                            else if (x.Contains("<InitComplete>"))
                            {
                                //终端已初始化完成
                                //synSetting,synFile
                                //遍历 【同步文件】 下所有文件
                                var dic = new  DirectoryInfo(Application.StartupPath + "\\同步设置");
                                var tmp = new StringBuilder();
                                foreach (var f in dic.EnumerateFiles())
                                {
                                    tmp.Append("<file><name>").Append(f.Name).Append("</name>").Append("<version>").Append(HttpUtil.GetMD5ByMD5CryptoService(f.FullName)).Append("</version>");
                                }
                                if (tmp.Length > 0)
                                {
                                    tmp.Append("<versionCheck>");
                                    s.Send(tmp.ToString());
                                }
                            }
                            else
                            {
                                AppendLog("新消息[" + s.client.Client.RemoteEndPoint.ToString() + "] " + x);
                                targetItem.SubItems[3].Text = x;
                            }
                        }
                    });
                },
                ServerConnected = (x) => {
                    this.Invoke((EventHandler) delegate {
                        AppendLog("已连接:" + x.Ip);
                        var info = new string[4];
                        info[1]  = x.IsLocal?"主机":"终端";
                        info[2]  = x.Ip;
                        info[0]  = x.clientName;
                        LstConnection.Items.Add(new ListViewItem(info));

                        var welcome = new Task(() => {
                            Thread.Sleep(3000);
                            x.Send("<welcome>" + DateTime.Now + "</welcome>");
                        });
                        welcome.Start();
                    });
                },
                ServerDisconnected = (x) => {
                    this.Invoke((EventHandler) delegate {
                        AppendLog("已断开:" + x.Ip);
                        for (int i = 0; i < LstConnection.Items.Count; i++)
                        {
                            if (LstConnection.Items[i].SubItems[2].Text == x.Ip)
                            {
                                LstConnection.Items.RemoveAt(i);
                            }
                        }
                    });
                },
                HttpRequest = (x, s) => {
                    s.Response(string.Format("<h1>Hey,测试服务器已开启</h1><br><p>当前连接数:{0}</p>", LstConnection.Items.Count));
                }
            };
            LstConnection.AfterLabelEdit += CheckIfUserEditName;
        }