Beispiel #1
0
        private void NodeReceiver_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            if (e.Cancelled)
            {
                ConnNodeBtn.Text = "连接节点";
                bConnect         = false;
                Tclient.Close();
                Dclient.Close();
                AddtoBox(Color.Black, "数据接收取消!\n/>");
            }
            else if (e.Error != null)
            {
                ConnNodeBtn.Text = "连接节点";
                AddtoBox(Color.Black, "数据接收中断!\n/>");
                Dclient.Close();
                Tclient.Close();
                AddtoBox(Color.Black, "错误信息:" + e.Error.ToString() + "\r\n/>");
            }
            else
            {
                ConnNodeBtn.Text = "连接节点";
                AddtoBox(Color.Black, "数据接收中断!\n/>");
                //AddtoBox(Color.Black, "错误号:" + e.Error.ToString() + "\r\n/>");
                Dclient.Close();
                Tclient.Close();
            }
        }
Beispiel #2
0
        private void CommAnsReceiver_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            if (e.Cancelled)
            {
                ConnNodeBtn.Text = "连接节点";
                bConnect         = false;
                AddtoBox(Color.Black, "Command ans receive Cancelled!\r\n/>");
            }
            else if (!bConnect)
            {
                ConnNodeBtn.Text = "连接节点";
                Tclient.Close();
                Dclient.Close();
            }
        }
Beispiel #3
0
        private void NodeLinker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            if (e.Cancelled)
            {
                ConnNodeBtn.Text = "连接节点";
                string errstring = "操作已被取消!";
                SendStatusLabel(errstring);
                AddtoBox(Color.Black, errstring + "\r\n");
                bConnect = false;
                Tclient.Close();
                Dclient.Close();
            }
            else if (e.Result != null)
            {
                ConnNodeBtn.Text = "连接节点";
                string errstring = " 操作失败!" + "错误号:" + e.Result.ToString();
                SendStatusLabel(errstring);
                AddtoBox(Color.Black, errstring + "\r\n");
                bConnect = false;
                Tclient.Close();
                Dclient.Close();
            }
            else
            {
                bConnect         = true;
                ConnNodeBtn.Text = "断开连接";
                SendStatusLabel("已连接节点");
                AddtoBox(Color.Black, "已连接节点\r\n");
                if (Tclient.Connected)
                {
                    networkdata data = new networkdata();
                    data.DataType = 0;
                    CommAnsReceiver.RunWorkerAsync(data);
                }
                if (Dclient.Connected)
                {
                    networkdata data = new networkdata();
                    data.DataType = 1;
                    NodeReceiver.RunWorkerAsync(data);
                }
            }
        }
Beispiel #4
0
        private void AvailabilityChangedCallback(object sender, EventArgs e)
        {
            NetworkAvailabilityEventArgs myEg = (NetworkAvailabilityEventArgs)e;

            if (!myEg.IsAvailable)
            {
                if (Tclient == null || Dclient == null)
                {
                    return;
                }
                if (Tclient.Client != null)
                {
                    if (Tclient.Connected)
                    {
                        Tstream.Close();
                        Tclient.Close();
                    }
                }
                else
                {
                    Tclient.Close();
                }
                if (Dclient.Client != null)
                {
                    if (Dclient.Connected)
                    {
                        Dstream.Close();
                        Dclient.Close();
                    }
                }
                else
                {
                    Dclient.Close();
                }
                if (DLoadDataWorker.IsBusy)
                {
                    DLoadDataWorker.CancelAsync();
                    ACPacketHandle.Set();
                }
                MessageBox.Show("网络状态出错,请检查网络!");

                bConnect = false;
            }
        }
Beispiel #5
0
        private void connect(IPAddress ipaddr, BackgroundWorker MyWorker, DoWorkEventArgs e)
        {
            if (MyWorker.CancellationPending)
            {
                e.Cancel = true;
            }

            string[] cportstr = { "命令端口" };
            int      cport    = Int16.Parse(XmlHelper.GetConfigValue(xmldoc, cportstr));

            string[] dportstr = { "数据端口" };
            int      dport    = Int16.Parse(XmlHelper.GetConfigValue(xmldoc, dportstr));

            try
            {
                AddtoBox(Color.Black, "连接命令端口……\r\n");

                Tclient.BeginConnect(ipaddr, cport, new AsyncCallback(ConnnectCallBack), Tclient);
                while (true)
                {
                    Thread.Sleep(50);
                    if (MyWorker.CancellationPending == false)
                    {
                        if ((Tclient.Client != null) && (Tclient.Connected == true))
                        {
                            Tstream = Tclient.GetStream();
                            AddtoBox(Color.Black, "命令端口已连接。\r\n");
                            break;
                        }
                    }
                    else
                    {
                        e.Cancel = true;
                        return;
                    }
                }
            }
            catch (SocketException myEx)
            {
                e.Result = myEx.ErrorCode;
                bConnect = false;
                AddtoBox(Color.Black, "命令端口连接失败。\r\n");
                return;
            }
            try
            {
                AddtoBox(Color.Black, "数据命令端口……\r\n");

                Dclient.BeginConnect(ipaddr, dport, new AsyncCallback(ConnnectCallBack), Dclient);
                while (true)
                {
                    Thread.Sleep(50);
                    if (MyWorker.CancellationPending == false)
                    {
                        if ((Dclient.Client != null) && (Dclient.Connected == true))
                        {
                            Dstream = Dclient.GetStream();
                            AddtoBox(Color.Black, "数据端口已连接。\r\n");
                            break;
                        }
                    }
                    else
                    {
                        e.Cancel = true;
                        return;
                    }
                }
                bConnect = true;
                //AddtoBox(Color.Black, "数据端口已连接。\r\n");
            }
            catch (SocketException myEx)
            {
                e.Result = myEx.ErrorCode;
                bConnect = false;
                AddtoBox(Color.Black, "数据端口连接失败。\r\n");
                return;
            }
            HbClient.BeginConnect(IPAddress.Parse("127.0.0.1"), 32100, new AsyncCallback(HBConnnectCallBack), HbClient);
            int count = 0;

            while (true)
            {
                count++;
                Thread.Sleep(50);
                if (MyWorker.CancellationPending == false)
                {
                    if ((HbClient.Client != null) && (HbClient.Connected == true))
                    {
                        Hbstream = HbClient.GetStream();
                        AddtoBox(Color.Black, "HB端口已连接。\r\n");
                        break;
                    }
                }
                else
                {
                    //e.Cancel = true;
                    return;
                }
                if (count > 100)//5s
                {
                    break;
                }
            }
        }
Beispiel #6
0
 public void ConnNodeBtn_Click(object sender, EventArgs e)
 {
     //开始连接
     if (ConnNodeBtn.Text == "连接节点")
     {
         IPCollections Icf = new IPCollections();
         //读取节点
         XmlDocument xmlfile = new XmlDocument();
         xmlfile.Load(xmldoc);
         string  strip;
         XmlNode xn = xmlfile.DocumentElement;
         xn = xn.SelectSingleNode("descendant::节点配置");
         foreach (XmlNode subnode in xn.ChildNodes)
         {
             string[] ip = { "节点配置", subnode.Name, "网络配置", "节点IP" };
             strip = XmlHelper.GetConfigValue(xmldoc, ip);
             Icf.IPList.Items.Add(subnode.Name + " " + strip);
         }
         if (Icf.ShowDialog() == DialogResult.OK)
         {
             int       g      = Icf.IPList.CheckedIndices[0];
             string[]  str    = Icf.IPList.Items[g].ToString().Split(' ');
             IPAddress Nodeip = IPAddress.Parse(str[1]);
             ConnectNode(Nodeip);
         }
         Icf.Dispose();
     }
     //取消连接
     else
     {
         bConnect = false;
         this.NodeLinker.CancelAsync();
         this.NodeReceiver.CancelAsync();
         this.CommAnsReceiver.CancelAsync();
         if (Tclient.Client != null)
         {
             if (Tclient.Connected)
             {
                 Tstream.Close();
                 Tclient.Close();
             }
         }
         else
         {
             Tclient.Close();
         }
         if (Dclient.Client != null)
         {
             if (Dclient.Connected)
             {
                 Dstream.Close();
                 Dclient.Close();
             }
         }
         else
         {
             Dclient.Close();
         }
         SendStatusLabel("未连接节点");
         ConnNodeBtn.Text = "连接节点";
         AddtoBox(Color.Black, "与节点断开\r\n");
         bConnect = false;
     }
 }