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里设置的是允许匿名登录的啊,为什么这样就登录不了
<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里设置的是允许匿名登录的啊,为什么这样就登录不了
解决方案 »
- 解析通讯发过来的一个包
- C# 插入音乐
- winform 打包部署
- SQL Server 2005无法自动备份???
- 把word中的<strong>34234234234234243324</strong>这个字符串变成html格式的,就是中间的数字变成粗体,不显示</strong>,怎么做呢?
- 请高手奖空缺填好谢谢
- 急救!!datagrid!!!绑定数据后close DataReader问题
- 听说这里高手不少(有能力的进)
- 新人请教关于XML的操作问题。。。
- C#如何重定向打开FTP登录界面
- C# 解析JSON,使用DataContractJsonSerializer类,求指点。
- WPF使用FileSystemWatcher遇到问题了..
每个命令都要以\r\n结尾,你先试下
private void SendCommand(String strCommand)
{
Byte[] cmdBytes =
ASCII.GetBytes((strCommand + "\r\n").ToCharArray());
socketControl.Send(cmdBytes, cmdBytes.Length, 0);
ReadReply();
}这个肯定有的,因为用户名那里是通过了的
啊- -我一直以为随便写的,我还试了默认FTP里的那个用户名,也不行