当前位置:编程学习 > C#/ASP.NET >>

如果socket连接服务器失败,会继续尝试连接。但是界面会卡住,该如何解决


        public delegate void connDelegate();
        private void conn()
        {
            try
            {
                socket.Connect(ipe); //连接到服务器
                listBox1.Items.Add("socket连接成功,准备接收数据...");
                listBox1.Refresh();
                showLB1.Text = "socket连接成功,准备接收数据...";
                showLB1.Refresh();
            }
            catch (Exception ee)
            {
                Console.WriteLine("Exception:{0}", ee);
                listBox1.Items.Add("连接失败,正在重试,请稍后!");
                listBox1.Refresh();
                showLB1.Text = "连接失败,正在重试,请稍后! ";
                showLB1.Refresh();
            }
        }

       private void okBtn_Click(object sender, EventArgs e)
        {
            connDelegate connDele = new connDelegate(conn);
            this.ip = ipTB.Text;
            portS = portTB.Text;
            this.path = textBox1.Text;
            if (this.ip == "" || portS == "" || this.path == "")
            {
                showLB1.Text = "ip,port和文件的输入框不能为空!";
            }
            MessageBox.Show(ip);

            this.port = int.Parse(portS);
            try
            {
                //创建终结点EndPoint
                ipaddress = IPAddress.Parse(this.ip);
                ipe = new IPEndPoint(ipaddress, this.port);

                //创建Socket并连接到服务器
                socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            while (!socket.Connected)
            {
                Thread.Sleep(2000);
                Invoke(connDele);
            }

        }
c# form卡
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,