C#实现FTP客户端登录报错 先确保你ftp服务端没问题(比如你用ftp client软件正常登录)然后用这里面的方法试试http://blog.csdn.net/chinacsharper/article/details/9501773。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的FTP服务端也是用C#实现的我用DOS操作FTP服务端可以实现上传下载列表显示。我的FTP客户端在IIS上搭建的FTP服务 也可以正常使用,但是用我C#实现的FTP客户端和C#实现的服务端连接的话就报基础连接被关闭错!跪求解决方法啊 // 创建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("传输完成");客户端主要代码 js传参调用后台方法 asp.net 高手请进,解决问题!! c#遍历树的问题 GDI+为什么旋转后位置不正确,高手帮忙!! 急问:Treeview节点前的默认图标无法显示的问题... 两个项目之间图片的读取 如何 事件触发 求助:这段C#语句最后为什么不显示10 20 100 200? 如果没有Close流,程序结束后会自动关闭么? 求关于.NET优点方面的资料,来者给分 c# onclick 事件 如何实现一个半透明按钮叠加在另外一个控件上,仍然有半透明效果?
我的FTP客户端在IIS上搭建的FTP服务 也可以正常使用,但是用我C#实现的FTP客户端和C#实现的服务端连接的话就报基础连接被关闭错!跪求解决方法啊
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("传输完成");
客户端主要代码