FTP登陆问题
app.config内容如下
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Host" value="192.168.0.32"/>
<add key="Path" value=""/>
<add key="User" value="hak"/>
<add key="Pwd" value="fff"/>
<add key="Port" value="21"/>
</appSettings>
</configuration>
程序代码如下
private void Form1_Load(object sender, EventArgs e)
{
try
{
_ftpInfo = ReadFtpConfig();
}
catch (Exception rex)
{
MessageBox.Show("读取配置失败!错误信息:" + rex.Message);
_isFinishUpdate = true;
Application.Exit();
return;
}
}
private FtpInfo ReadFtpConfig()
{
FtpInfo ftp = new FtpInfo()
{
RemoteHost = ConfigurationSettings.AppSettings["Host"],
RemotePath = ConfigurationSettings.AppSettings["Path"],
RemoteUser = ConfigurationSettings.AppSettings["User"],
RemotePass = ConfigurationSettings.AppSettings["Pwd"],
RemotePort = int.Parse(ConfigurationSettings.AppSettings["Port"])
};
return ftp;
}
private void button1_Click(object sender, EventArgs e)
{
_ftpClient = new FTPClient(_ftpInfo);
try
{
_ftpClient.Connect();
}
catch (Exception ex)
{
MessageBox.Show("连接FTP服务器失败!错误信息:" + ex.Message);
_isFinishUpdate = true;
return;
}
}
FtpInfo和FTPClient都是网上找的资源里的,一个是FTP信息的,一个是有关连接的,不知道为什么我每次按钮事件都是user XXX cannot log in.跟踪了connect()的执行
public void Connect()
{
if (!EnsureHostIsIP())
{
bConnected = false;
return;
}
socketControl = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ep = new IPEndPoint(IPAddress.Parse(_ftp.RemoteHost), _ftp.RemotePort);
// 鏈結
try
{
socketControl.Connect(ep);
}
catch (Exception)
{
throw new IOException("Couldn't connect to remote server");
}
// 获取应答码
ReadReply();
if (iReplyCode != 220)
{
DisConnect();
throw new IOException(strReply.Substring(4));
}
// 登陸
SendCommand("USER " + _ftp.RemoteUser);
if (!(iReplyCode == 331 || iReplyCode == 230))
{
CloseSocketConnect();//关闭连接
throw new IOException(strReply.Substring(4));
}
if (iReplyCode != 230)
{
SendCommand("PASS " + _ftp.RemotePass);
if (!(iReplyCode == 230 || iReplyCode == 202))
{
CloseSocketConnect();//关闭连接
throw new IOException(strReply.Substring(4));
}
}
bConnected = true;
// 切換到目录
ChangeDir(_ftp.RemotePath);
}
//每次在红色字体标出的语句执行完后iReplyCode 就变成了510,网上查询了下是未登录的意思,这什么情况,我IIS里默认FTP里设置的是允许匿名登录的啊,为什么这样就登录不了