当前位置:编程学习 > VC++ >>

用VC++编制FTP客户端应用程序

 

 

  FTP协议将使用两条单独的TCP连接,一条专用于发送FTP命令,另一条则专用于传

递数据。初始建立连接时,服务器在21号端口上接收来自客户端的命令连接。当需要传

送数据时(文件列表、文件数据等),客户端向服务器发出Port命令,并进入监听状

态,等待来自服务器的数据连接请求。

 

  首先我们利用VC++ 6.0的AppWizard创建一个基于对话框的应用程序,命名为

FtpClientDemo。为程序生成五个基于CAsyncSocket的新类,这里列出主要代码。

 

 

  CCommandSocket类的主要代码

 

  void CCommandSocket::OnReceive(int nErrorCode)

 

  

 

 

  //这个函数使得服务器的应答消息显示在编辑框上

 

   char buffer=new char[4096];

 

   memset(buffer,0,4096);

 

   this-〉Receive(buffer,1024,0);

 

  //接收应答消息

 

   MessageList+=buffer;

 

   m_ReturnMessage-〉SetWindowText(MessageList);

 

   delete buffer;

 

  }

 

  CFileSocket类的主要代码

 

    void CFileSocket::OnReceive(int nErrorCode)

 

  

 

 

  //函数将收到的文件数据写到文件中

 

   if(File= =NULL)

 

   { File=new CFile();

 

   File-〉Open(FileName,CFile::modeWrite|CFile::modeCreate);

 

   }

 

   charbuffer=new char[4096];

 

   memset(buffer,0,4096);

 

   this-〉Receive(buffer,4096,0);

 

   ReceiveString=buffer;

 

   File-〉Write(ReceiveString,ReceiveString.GetLength( ));

 

   delete buffer;

 

  }

 

  CReceiveSocket类的主要代码

 

  void CReceiveSocket::OnReceive(int nErrorCode)

 

  

 

 

  //接收服务器传来的文件列表消息

 

   CString ReceiveString,Temp;

 

   charbuffer=new char[4096];

 

   memset(buffer,0,4096);

 

   this-〉Receive(buffer,4096,0); //接收消息

 

   ReceiveString+=buffer;

 

   delete buffer;

 

  //将文件列表从收到的消息字符串中分离出来,并显示在列表框中

 

   while(!ReceiveString.IsEmpty())

 

   { int p=ReceiveString.Find(" ");

 

  if(p!=-1)

 

  { Temp=ReceiveString.Left(p);

 

 

补充:软件开发 , Vc ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,