如何判断 ftp 服务器中一个文件是否存在, C# + socket 实现.

Dobzhansky 2009-11-02 02:54:41
参考了
RFC959 FILE TRANSFER PROTOCOL (FTP)
RFC3659 Extensions to FTP
RFC2389 - Feature negotiation mechanism for the File Transfer Protocol

求思路.

使用 3659 的 size, mdtm 命令, 还是直接用 959 的强行下载测试.

...全文
593 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dobzhansky 2009-11-02
  • 打赏
  • 举报
回复
谢谢,
ftp session 都在 c# 内实现,

RFC 959 的都支持了,

靠, 找来找去, 还是 nlst 最方便
ziminyang 2009-11-02
  • 打赏
  • 举报
回复
用Socket来解决有一点复杂。先用Socket连接服务器端IP+端口,然后发送USER命令,再是PASS命令,如果不使用Passive模式,就直接CWD和LIST了。

命令参考http://www.nsftools.com/tips/RawFTP.htm。注,这是FTP通讯协议中规定的命令,和Windows自带的ftp工具中的命令不一样。
sundotLei 2009-11-02
  • 打赏
  • 举报
回复
使用 FtpWebRequest.


FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create(fileName);
ftp.Method = WebRequestMethods.Ftp.GetFileSize; //尝试获取文件大小

try
{
FtpWebResponse ftpresponse = (FtpWebResponse)ftp.GetResponse();
return true;
}
catch{
......
}

关于FtpWebRequest可以参照MSDN
http://msdn.microsoft.com/zh-cn/library/system.net.ftpwebrequest(VS.80).aspx
leogle_reloaded 2009-11-02
  • 打赏
  • 举报
回复
不是通用的还叫ftp吗
hhc123 2009-11-02
  • 打赏
  • 举报
回复
把你要检查是否存在的文件的文件名发送到服务器,让服务器去Checked 如File.Exists(文件名);如果存在返回true给客户端,没有返回False;主要是你的FTP协议是你自己写的,还是用FTP通用的协议
symbol441 2009-11-02
  • 打赏
  • 举报
回复
dir 文件名
leogle_reloaded 2009-11-02
  • 打赏
  • 举报
回复
用ftpwebrequest不行吗?文件不存在会返回550错误的

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧