FTP问题:

shiyangnjtu 2003-09-12 09:48:30
请问,我写一个客户程序,连接到FTP服务器,我想得到连接的状态,例如我想知道连接不上的原因(拒绝访问或者是用户名密码不正确等),还有如果掉线了,我也想得到消息,请问,如何能实现。谢谢。
...全文
58 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
netsys2 2003-09-15
  • 打赏
  • 举报
回复
可是我不知道怎么去截获FTP服务器返回的消息,请问,FTP返回的会是什么消息啊?
-------》

你是怎么连FTP SERVER的啊?

你总得有个客户端吧。

FTP是TCP之上的东西,直接从SOCKET接收数据。

如果你用CB、DELPHI,那么它本身就自带FTP客户端控件,同时包含丰富的事件。

FTP的错误定义:
http://www.faqs.org/rfcs/rfc630.html

FTP协议:
http://www.faqs.org/rfcs/rfc412.html
shiyangnjtu 2003-09-15
  • 打赏
  • 举报
回复
可是我不知道怎么去截获FTP服务器返回的消息,请问,FTP返回的会是什么消息啊?谢谢了各位。
kingzai 2003-09-13
  • 打赏
  • 举报
回复
http://www.marshallsoft.com/fce_4c.htm
shiyangnjtu 2003-09-12
  • 打赏
  • 举报
回复
哦,抱歉,忘记补充了,我用API做,不能用MFC。
CViva 2003-09-12
  • 打赏
  • 举报
回复
去找找CFTPclient类看看

下面一段可做参考:

BOOL CFTPclient::OpenControlChannel(CString serverhost,int serverport) {
m_retmsg.LoadString(IDS_FTPMSG2);
if(!(m_Ctrlsok=new CSocket)) return FALSE;
if(!(m_Ctrlsok->Create())) return FALSE;
m_retmsg.LoadString(IDS_FTPMSG3);
if(!(m_Ctrlsok->Connect(serverhost,serverport))) return FALSE;
m_retmsg.LoadString(IDS_FTPMSG2);
if(!(m_pCtrlsokfile=new CSocketFile(m_Ctrlsok))) return FALSE;
if(!(m_pCtrlRxarch=new CArchive(m_pCtrlsokfile,CArchive::load))) return FALSE;
if(!(m_pCtrlTxarch=new CArchive(m_pCtrlsokfile,CArchive::store))) return FALSE;
return TRUE;
}
廖雪峰 2003-09-12
  • 打赏
  • 举报
回复
ftp响应的格式为:
### 一些消息
例如
500 不可识别的命令

530 对不起,每台机器只允许一个连接

判断前3个数就可以得到状态 后面是一些说明

如果一次有几个响应,格式为:
###-text
###-text
### text
只有最后一行是 ###(空格)
如果是###-表示还有下一行响应

如服务器可能返回
230-welcome!
230-introduction
230 over

查一下FTP的rfc就能知道状态码

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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