C# 关于一个FTP连接有关问题
C# 关于一个FTP连接问题
问题描述如下:

如图,输入FTP服务器IP地址,FTP登录名,FTP登录密码。假设三者正确的登录信息为[192.168.1.8,myusername,mypassword]。
第一次输入正确的三者信息[192.168.1.8,myusername,mypassword],点设置按钮,反馈回来连接成功;
然后我故意输入错的登录名[192.168.1.8,myusername1,mypassword],反馈回来连接失败。
接着我修改登录名为正确用户名,并故意输入错的登录密码[192.168.1.8,myusername,mypassword1],反馈回来的结果是连接成功。
我的代码可以动态读取用户名信息,但密码一旦登录成功则就一直不变了,我的需求就是第一次登录成功后,接着修改登录密码为错的登录密码后,就不允许登录成功。
问题描述如下:
如图,输入FTP服务器IP地址,FTP登录名,FTP登录密码。假设三者正确的登录信息为[192.168.1.8,myusername,mypassword]。
第一次输入正确的三者信息[192.168.1.8,myusername,mypassword],点设置按钮,反馈回来连接成功;
然后我故意输入错的登录名[192.168.1.8,myusername1,mypassword],反馈回来连接失败。
接着我修改登录名为正确用户名,并故意输入错的登录密码[192.168.1.8,myusername,mypassword1],反馈回来的结果是连接成功。
我的代码可以动态读取用户名信息,但密码一旦登录成功则就一直不变了,我的需求就是第一次登录成功后,接着修改登录密码为错的登录密码后,就不允许登录成功。
//声明全局变量
private string ftpUristring = null;
private NetworkCredential networkCredential;
private string currentDir = "/";
//设置按钮事件
private void setBtn_Click(object sender, EventArgs e)
{
try
{
if (FTPIpTxt.Text == string.Empty || FTPUsernameTxt.Text == string.Empty)
{
MessageBox.Show("FTP服务器IP或者用户名不能为空", "提示");
return;
}
ftpUristring = "ftp://" + FTPIpTxt.Text;
networkCredential = new NetworkCredential(FTPUsernameTxt.Text, FTPPasswordTxt.Text);
if (ShowFtpFileAndDirectory() == true)
{
listReports.Enabled = true;
listStatus.Enabled = true;
loginStatusLabel.Visible = true;
loginStatusLabel.Text = "登录成功";
}
else
{
listStatus.Enabled = true;
loginStatusLabel.Visible = true;
loginStatusLabel.Text = "登录失败";
}
}
catch(Exception ex)
{ MessageBox.Show(ex.Message); }
}
// 定义布尔函数ShowFtpFileAndDirectory,处理FTP连接并显示资源列表,如果返回正确的服务器回应信息,则传递true值到button事件,如果FTP连接失败返回错误的服务器回应信息,则传递false值到button事件
private bool ShowFtpFileAndDirectory()
{
listReports.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);
// 获得服务器返回的响应信息