先确保你ftp服务端没问题(比如你用ftp client软件正常登录)然后用这里面的方法试试http://blog.csdn.net/chinacsharper/article/details/9501773。

解决方案 »

  1.   

    我的FTP服务端也是用C#实现的我用DOS操作FTP服务端可以实现上传下载列表显示。
    我的FTP客户端在IIS上搭建的FTP服务 也可以正常使用,但是用我C#实现的FTP客户端和C#实现的服务端连接的话就报基础连接被关闭错!跪求解决方法啊 
      

  2.   

     // 创建FTP连接
            private FtpWebRequest CreateFtpWebRequest(string uri, string requestMethod)
            {
                FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(uri);
                request.Credentials = networkCredential;
                request.KeepAlive = true;
                request.UseBinary = true;
                request.Method = requestMethod;
                return request;
            }        // 获取服务器返回的响应体
            private FtpWebResponse GetFtpResponse(FtpWebRequest request)
            {
                FtpWebResponse response = null;
                try
                {
                    response = (FtpWebResponse)request.GetResponse();//检索包含从 FTP 服务器上发送的响应数据的流
                    lstbxFtpState.Items.Add("验证完毕,服务器回应信息:[" + response.WelcomeMessage + "]");
                    lstbxFtpState.Items.Add("正在连接:[ " + response.BannerMessage + "]");
                    lstbxFtpState.TopIndex = lstbxFtpState.Items.Count - 1;
                    return response;
                }
                catch(WebException ex)
                {
                    lstbxFtpState.Items.Add("发送错误。返回信息为:" + ex.Status);
                    lstbxFtpState.TopIndex = lstbxFtpState.Items.Count - 1;
                    return null;
                }
            }
            #endregion         #region 登录模块的实现
            // 登录服务器事件
            private void btnlogin_Click(object sender, EventArgs e)
            {
                if (tbxServerIp.Text == string.Empty)
                {
                    MessageBox.Show("请先填写服务器IP地址", "提示");
                    return;
                }            ftpUristring = "ftp://" + tbxServerIp.Text;
                networkCredential = new NetworkCredential(tbxUsername.Text, tbxPassword.Text);
                if (ShowFtpFileAndDirectory() == true)
                {
                    btnlogin.Enabled = false;
                    btnlogout.Enabled = true;
                    lstbxFtpResources.Enabled = true;
                    lstbxFtpState.Enabled = true;
                    tbxServerIp.Enabled = false;
                    if (chkbxAnonymous.Checked == false)
                    {
                        tbxUsername.Enabled = false;
                        tbxPassword.Enabled = false;
                        chkbxAnonymous.Enabled = false;
                    }
                    else
                    {
                        chkbxAnonymous.Enabled = false;
                    }                tbxloginmessage.Text = "登录成功";
                    btnUpload.Enabled = true;
                    btndownload.Enabled = true;
                    btnDelete.Enabled = true;
                }
                else
                {
                    lstbxFtpState.Enabled = true;
                    tbxloginmessage.Text = "登录失败";
                }
            }        // 显示资源列表
            private bool ShowFtpFileAndDirectory()
            {
                lstbxFtpResources.Items.Clear();
                string uri = string.Empty;
                if (currentDir == "/")
                {
                    uri = ftpUristring;
                }
                else
                {
                    uri = ftpUristring + currentDir;
                }            string[] urifield = uri.Split(' ');
                uri = urifield[0];
                FtpWebRequest request = CreateFtpWebRequest(uri, WebRequestMethods.Ftp.ListDirectoryDetails);
                
                // 获得服务器返回的响应信息
                FtpWebResponse response = GetFtpResponse(request);
                if (response == null)
                {
                    return false;
                }
                lstbxFtpState.Items.Add("连接成功,服务器返回的是:"+response.StatusCode+" "+response.StatusDescription);            // 读取网络流数据
                Stream stream = response.GetResponseStream();
                StreamReader streamReader = new StreamReader(stream,Encoding.Default);
                lstbxFtpState.Items.Add("获取响应流....");
                string s = streamReader.ReadToEnd();
                streamReader.Close();
                stream.Close();
                response.Close();
                lstbxFtpState.Items.Add("传输完成");
    客户端主要代码