当前位置:编程学习 > C/C++ >>

给出一个C++或Java编写的ftp服务器程序

给一个C++或Java编写的ftp服务器程序,给出后我会给你追加100点,如果给不出,那告诉我一些需要的相关知识和设计思路也可以
补充:给出的程序要有详细注释,要不没法看啊
追问:帅哥,你这个连注释都没有啊,再说了应该有服务器程序和客户程序吧

答案:给你一个MFC写的:
// FtpClient.h: inte易做图ce for the CFtpServer class.
//

#if !defined(_FTPCLIENT_H)
#define _FTPCLIENT_H

#include <afxinet.h>

class CFtpClient
{
//构造/析构函数
public:

    CFtpClient(const char *pszFtpIp, const char *pszFtpPort, const char *pszFtpUser, const char *pszFtpPassWord);
    //功能:构造函数
    //参数:pszFtpIp---------Ftp服务器IP地址
    //       pszFtpPort-------Ftp服务器端口
    //     pszFtpUser-------Ftp用户名
    //       pszFtpPassWord---Ftp用户密码
    //返回值:无

    virtual ~CFtpClient();
    //功能:析构函数
    //参数:无
    //返回值:无


//公有成员函数
public:

    BOOL ConnectFtpServer();
    //功能:连接FTP服务器
    //参数:无
    //返回值:TRUE--连接成功,FALSE--连接失败
   
    void DisConnectFtpServer();
    //功能:断开与FTP服务器的连接
    //参数:无
    //返回值:无

    BOOL PutFileToFtpServer(const char *pszFilePath);
    //功能:上传指定的文件到FTP服务器
    //参数:要上传的文件名
    //返回值:TRUE--连接成功,FALSE--连接失败

    BOOL GetFileFromFtpServer(const char *pszFilePath);
    //功能:从FTP服务器下载指定文件
    //参数:要下载的文件名
    //返回值:TRUE--连接成功,FALSE--连接失败

    CString GetUpLoadFilePath();
    //功能:得到上传文件名
    //参数:无
    //返回值:得到的当前路径


//私有成员变量
private:
   char                m_szFtpIp[20];            //Ftp服务器IP地址
   UINT                m_uFtpPort;                //Ftp服务器端口
   char                m_szFtpUser[20];        //Ftp用户名
   char                m_szFtpPassWord[20];    //Ftp用户密码

   CInternetSession    *m_pInetSession;        //Internet会话对象指针
   CFtpConnection    *m_pFtpConnection;        //FTP服务连接对象指针
};

#endif



// FtpClient.cpp: implementation of the CFtpServer class.
//


#include "FtpClient.h"

CFtpClient::CFtpClient(const char *pszFtpIp, const char *pszFtpPort, const char *pszFtpUser,const char *pszFtpPassWord)
{
    strcpy(m_szFtpIp, pszFtpIp);
    m_uFtpPort = atoi(pszFtpPort);
    strcpy(m_szFtpUser, pszFtpUser);
    strcpy(m_szFtpPassWord, pszFtpPassWord);

    m_pInetSession = NULL;
    m_pFtpConnection = NULL;    
}

CFtpClient::~CFtpClient()
{

}

BOOL CFtpClient::ConnectFtpServer()
{
    //创建Internet会话
    m_pInetSession = new CInternetSession(AfxGetAppName(), 1, PRE_CONFIG_INTERNET_ACCESS);
   
    try
    {
        //连接Ftp服务器
        m_pFtpConnection = m_pInetSession->GetFtpConnection(m_szFtpIp, m_szFtpUser, m_szFtpPassWord, m_uFtpPort);
    }
    catch(CInternetException *pEx)
    {
        char szError[1024];
        pEx->GetErrorMessage(szError, 1024);
        pEx->Delete();

        CLog Log;
        Log.RecordLog("连接Ftp服务器", CString("9999"), CString(szError));

        return FALSE;
    }
   
    return TRUE;
}

void CFtpClient::DisConnectFtpServer()
{
    if(m_pFtpConnection != NULL)
    {
        m_pFtpConnection->Close();
        delete m_pFtpConnection;
        m_pFtpConnection = NULL;
    }
   
    if(m_pInetSession !=NULL)
    {
        m_pInetSession->Close();
        delete m_pInetSession;
        m_pInetSession = NULL;
    }
}

BOOL CFtpClient::PutFileToFtpServer(const char *pszFilePath)
{
    //1. 判断服务器是否连接
    if(m_pFtpConnection == NULL)
    {
        return FALSE;
    }
   
    char szLocalFile[200] = {0};
    char szRemoteFile[200] = {0};

    //2. 本地文件名
    sprintf(szLocalFile, "%s", pszFilePath);
   
    //3. 远程文件名
    char szDrive[10] = {0};
    char szDir[210] = {0};
    char szFileName[70] = {0};
    char szExt[10] = {0};

    _splitpath(pszFilePath, szDrive, szDir, szFileName, szExt);
    sprintf(szRemoteFile, "%s\\%s.%s", g_strEnterpriseID, szFileName, szExt);
   
    //4. 文件上传
    if(!m_pFtpConnection->PutFile(szLocalFile, szRemoteFile))
    {
        return FALSE;
    }
   
    return TRUE;
}

BOOL CFtpClient::GetFileFromFtpServer(const char *pszFilePath)
{
    //1. 判断服务器是否连接
    if(m_pFtpConnection == NULL)
    {
        return FALSE;
    }
   
    char szLocalFile[200] = {0};
    char szRemoteFile[200] = {0};
   
    //2. 本地文件名
    sprintf(szLocalFile,"%s",pszFilePath);
   
    //3. 远程文件名
    char szDrive[10] = {0};
    char szDir[210] = {0};
    char szFileName[70] = {0};
    char szExt[10] = {0};
   
    _splitpath(pszFilePath, szDrive, szDir, szFileName, szExt);
    sprintf(szRemoteFile, "%s\\%s.%s", g_strEnterpriseID, szFileName, szExt);
       
    //4. 文件下载
    if(!m_pFtpConnection->GetFile(szRemoteFile, szLocalFile))
    {
        return FALSE;
    }
   
    return TRUE;
}

CString CFtpClient::GetUpLoadFilePath()
{
    CString

上一个:常见的几种Java开发工具的特点比较谁有?
下一个:关于Java的一段程序(加上详细的注释,感谢)

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,