首页 > 开发 > 综合 > 正文

C#中的Ftp组件和简单的Ftp客户端

2020-02-03 13:45:55
字体:
来源:转载
供稿:网友

程序说明:

原作者jerome lacaille,代码大小:k48。
环境:c#, .net
下面是翻译的作者的说明。

简介

这时我第一次写一个c#的组件,我决定做一个实现ftp的组件。这里提供一个使用这个组件的简单的代码。我并不能保证这个组件的代码可以很好的工作于任何情况下,但是我想我会在得到的反馈中改进它。

把这个组件加入到toolbox(使用自定义的toolbox )中并放到你的form里。这个工程包括了一个简单的ftp客户端。

代码:
连接到ftp服务器:
ftpc.username = efusername.text;
ftpc.password = efpassword.text;

ftpc.hostname = cbftpserver.text;
ftpc.connect();

登陆服务器:
private void ftpc_connected(object sender, ftpcom.ftpeventargs e)
{
ftpc.login();
}

成功连接后时间将被记录:
private void ftpc_logged(object sender, ftpcom.ftpeventargs e)
{
ftpc.dir();
}

得到一个目录列表:
private void ftpc_dircompleted(object sender, ftpcom.ftpeventargs e)
{
int i = 0;
int idimage = 0;
string msg;

msg = "transfered " + e.totalbytes.tostring() + " bytes in " +
((float)e.timeelapsed / 1000).tostring() + " seconds" + crlf;
textlog.selectioncolor = color.black;
textlog.appendtext(msg);

serverview.beginupdate();
serverview.items.clear();
imglistserversmall.images.clear();

listviewitem lvitem = new listviewitem("..");
serverview.items.add(lvitem);

for (i = 0; i < ftpc.filecount; i++)
{
if (ftpc.isfolder(i))
{
string[] items = new string[2];
items[0] = ftpc.getfilename(i);
items[1] = ftpc.getfilesize(i).tostring();
imglistserversmall.images.add (m_iconfolder);
serverview.items.add(new listviewitem(items, idimage++));
}
}
for (i = 0; i < ftpc.filecount; i++)
{
if (!ftpc.isfolder(i))
{
string[] items = new string[2];
items[0] = ftpc.getfilename(i);
items[1] = ftpc.getfilesize(i).tostring();
imglistserversmall.images.add (extracticon.geticon(items[0], false));
serverview.items.add(new listviewitem(items, idimage++));
}
}
serverview.endupdate();
this.cursor = cursors.default;
}

下载一个文件:
private void serverview_mousemove(object sender,
system.windows.forms.mouseeventargs e)
{
if (e.button != 0)
{
string msg = "";

for (int i = 0; i < serverview.selecteditems.count; i++)
{
msg += serverview.selecteditems[i].text + "/n";
}

serverview.dodragdrop(msg, dragdropeffects.copy | dragdropeffects.move);
}
}

private void localview_dragenter(object sender, system.windows.forms.drageventargs e)
{
if (e.data.getdatapresent(dataformats.text))
e.effect = dragdropeffects.copy;
else
e.effect = dragdropeffects.none;
}

private void localview_dragdrop(object sender, system.windows.forms.drageventargs e)
{
string msg = e.data.getdata(dataformats.text).tostring();

string[] filename = msg.split(new char[] { '/n' });
foreach (string sfile in filename)
{
ftpc.filedownload(sfile);
}
}

当下载结束时,会放回一个filedownloadcompleted事件:
private void ftpc_filedownloadcompleted(object sender, ftpcom.ftpeventargs e)
{
string msg = "transfered " + e.totalbytes.tostring() + " bytes in " +
((float)e.timeelapsed / 1000).tostring() + " seconds" + crlf;
textlog.selectioncolor = color.black;
textlog.appendtext(msg);
filllocalview(m_currentfolder);
}

删除文件:
for (int i = 0; i < serverview.selecteditems.count; i++)
{
ftpc.delete (serverview.selecteditems[i].text);
}
ftpc.dir();

重命名文件:
private void serverview_afterlabeledit(object sender,
system.windows.forms.labelediteventargs e)
{
if (e.label != null)
{
this.cursor = cursors.waitcursor;

string newfilename = e.label;
if (m_previousfilename == "new folder")
{
ftpc.dircreate(newfilename);
}
else
{
ftpc.rename(m_previousfilename, newfilename);
}
ftpc.dir();
}
}

断开连接:
ftpc.disconnect();
serverview.items.clear();

希望给你一定的帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表