Exemplo n.º 1
0
        private void Button1_Click(object sender, EventArgs e)
        {
            if (!isLinked)
            {
                try
                {
                    textBox4.Text = "9090";
                    textBox1.Text = "192.168.31.164";
                    textBox3.Text = "1234";
                    textBox2.Text = "xh";

                    bool isip       = IsIP(textBox1.Text);
                    int  serverPort = int.Parse(textBox4.Text);
                    if (!isip || serverPort < 0 || serverPort > 65535)
                    {
                        MessageBox.Show("IP地址或端口错误!", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Error);
                        return;
                    }

                    String serverIp = textBox1.Text;
                    String user     = textBox2.Text;
                    String pass     = textBox3.Text;
                    try
                    {
                        ftpClient = new FtpClient(serverIp, serverPort, user, pass);
                        //ftpClient = new FtpClient();
                        ftpClient.login();
                    }
                    catch (MyException exce)
                    {
                        MessageBox.Show(exce.Message, "", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                        return;
                    }
                    MessageBox.Show("登录成功!", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    isLinked = true;

                    //实例化TreeNode类 TreeNode(string text,int imageIndex,int selectImageIndex)
                    TreeNode serverRootNode = new TreeNode("/", IconIndexs.Server, IconIndexs.Server); //载入显示 选择显示
                    serverRootNode.Name = "/";
                    serverRootNode.Tag  = "服务器";                                                       //树节点数据
                    serverRootNode.Text = "服务器";                                                       //树节点标签内容
                    this.serverTree.Nodes.Add(serverRootNode);


                    //断点续传,先登录,当登录成功之后,查询日志文件,如果日志文件中的某个信息与当前输入信息是相同的,则进行断点续传
                    // datatime + string curInfo = textBox1.Text + "\t" + textBox4.Text + "\t"
                    //  + textBox2.Text + "\t" + textBox3.Text + "\t" + textBox5.Text + "\t" + textBox6.Text + methods;

                    string filename = "E:\\c#\\ftp\\ftpClient\\ftpClient\\event.txt";

                    using (StreamReader sr = new StreamReader(filename))
                    {
                        while (!sr.EndOfStream)
                        {
                            string line1 = sr.ReadLine();
                            var    infos = line1.Replace("\t", "*").Split('*');
                            if (infos[1] == textBox1.Text && infos[3] == textBox2.Text && infos[2] == textBox4.Text)
                            {
                                if (infos[7] == "1")//methods=1表示下载
                                {
                                    if (DialogResult.OK == MessageBox.Show("是否继续下载 " + infos[6] + " ?", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Information))
                                    {
                                        string path  = infos[5];
                                        string fname = infos[6];
                                        //Console.WriteLine(path);
                                        path = Regex.Replace(path, @"\\", @"\\");
                                        //Console.WriteLine(path);
                                        int id = fname.Length - 1;
                                        while (fname[id] != '/')
                                        {
                                            id--;
                                        }
                                        String fileName = fname.Substring(id + 1, fname.Length - id - 1);
                                        path = path + "\\\\" + fileName;
                                        ftpClient.downloadFile(fname, path, 1);
                                        MessageBox.Show("下载完成!", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                                        sr.Close();
                                        //删除日志中的这一条记录
                                        log.DeleteLog(line1.Substring(20));

                                        //StreamReader sr = new StreamReader(filename)
                                    }
                                    else
                                    {
                                        //删除日志中的这一条记录
                                        continue;
                                    }
                                }
                                else//methods 为0表示上传
                                {
                                    //MessageBox.Show("是否重新上传 " + infos[5] + " ?", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                                    if (DialogResult.OK == MessageBox.Show("是否继续上传 " + infos[5] + " ?", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Information))
                                    {
                                        string fname = infos[5];
                                        string path  = infos[6];
                                        fname = Regex.Replace(fname, @"\\", @"\\");
                                        int id = fname.Length - 1;
                                        while (fname[id] != '\\')
                                        {
                                            id--;
                                        }
                                        String fileName = fname.Substring(id + 1, fname.Length - id - 1);
                                        ftpClient.uploadFile(fileName, fname, path, 1);
                                        MessageBox.Show("上传完成!", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                                        //删除日志中的这一条记录
                                        sr.Close();
                                        log.DeleteLog(line1.Substring(20));
                                    }
                                    else
                                    {
                                        //删除日志中的这一条记录
                                        continue;
                                    }
                                }
                            }
                        }

                        sr.Close();
                    }
                }
                catch (System.FormatException exception)
                {
                    MessageBox.Show(exception.Message, "", MessageBoxButtons.OKCancel, MessageBoxIcon.Error);
                    return;
                }
            }
            else
            {
                return;
            }
        }