Files
2022-10-26 12:25:11 +08:00

65 lines
2.0 KiB
C++

/************************************************************************/
/* CFtpNework */
/*
/* FTP 연결을 위한 win32 Ftp함수 랩퍼 클래스
/*
/* 작성자 : 조재식(Sun ServerTeam)
/*
/* 작성일 : 2006년 2월 1일
/*
/* Version : 0.0.1
/*
/************************************************************************/
#pragma once
#include <windows.h>
#include <wininet.h>
#include "define.h"
#include "MessageDefine.h"
#include "UpdateFileInfo.h"
#define FTP_ADDRESS_SIZE 64
#define FTP_BUFFER_SIZE 2048
#define MAX_RETRY_OPENFILE 10 //원격지 파일 열기 최대 도전회수
class DLL_DECLARE CFtpNetwork
{
public:
CFtpNetwork(void);
~CFtpNetwork(void);
private:
HINTERNET m_hInetSession; //인터넷 세션 핸들
HINTERNET m_hFtpConnection; //Ftp 연결 핸들
TCHAR m_szIP[FTP_ADDRESS_SIZE];
int m_nPort;
TCHAR m_szID[DEFAULT_BUFFER_SIZE]; //FTP ID
TCHAR m_szPass[DEFAULT_BUFFER_SIZE]; //FTP PASSWORD
TCHAR m_szFtpBuffer[FTP_BUFFER_SIZE]; //FTP Buffer
CUpdateFileInfo m_UpdateFileInfo;
public:
BOOL Connect( TCHAR* pszIP, int nPort, TCHAR* pszID, TCHAR* pszPass, DWORD &ErrorCode );
void DisConnect();
BOOL DownloadFile( const HINTERNET hRemoteFile, DWORD dwRemoteFileLength, HANDLE hLocalFile );
BOOL DownloadFile( const HINTERNET hRemoteFile, WIN32_FIND_DATA& RemoteInfo, HANDLE hLocalFile );
HINTERNET OpenFtpFile( TCHAR* pszFile );
BOOL GetFileInfo( const TCHAR* pszFile, WIN32_FIND_DATA& info ); //파일정보를 얻는다.
BOOL SetDirectory( const TCHAR* pszDir ); //FTP의 디렉토리를 설정한다.
BOOL GetDirectory( TCHAR* pszDir, DWORD dwSize ); //현재 FTP의 디렉토리를 가져온다.
void GetIP( TCHAR* pszIP, int nSize );
int GetPort(){return m_nPort;}
void AddMessage( UINT uMsg, VOID* pData );
BOOL IsConnectFTP();
//MsgCallback
public:
typedef VOID (*fnMsgCallBack)( UINT uMsgType, VOID* pData );
fnMsgCallBack m_fnMsgCallBack;
VOID SetMsgCallBack( fnMsgCallBack CallBack );
};