MFC/개인 실습
FTP(FileZilla) 접속하기
luckybee
2024. 4. 9. 10:06
728x90
반응형
1. FTP에 접속하기 위해서는 아래의 헤더파일과 lib를 포함시켜야 한다.
#include <Wininet.h>
#pragma comment(lib,"wininet.lib")
#include "direct.h"
2. 멤버 변수 선언
HINTERNET mh_ftp_session; //세션 생성을 위한 멤버 변수
HINTERNET mh_ftp_connection; //세션과 연결하기 위한 멤버 변수
3. 세션 생성하기
Win32 인터넷 함수를 사용하려면 세션을 생성해야 합니다. 세션은 InternetOpen 함수를 사용해서 생성할 수 있으며
다른 인터넷 함수를 사용할 때 사용됩니다. FTP 클라이언트를 만들기 위해서는 아래와 같이 InternetOpen 함수를
호출하여 세션을 생성하면 된다.
mh_ftp_session = ::InternetOpen(L"이름은 알아서 지으시면 됩니다.", INTERNET_OPEN_TYPE_DIRECT, NULL, 0, 0);
//INTERNET_OPEN_TYPE_DIRECT
//INTERNET_OPEN_TYPE_PRECONFIG
//전 레지에 등록이 되어있어서 그런가 둘 다 되네요
- INTERNET_OPEN_TYPE_PRECONFIG 레지스트리에서 미리 구성된 설정을 사용하여 연결합니다. 이 액세스 유형은 기본값으로 설정됩니다. TIS 프록시를 통해 연결하려면 dwAccessType을(를) 이 값으로 설정한 다음, 레지스트리를 적절하게 설정합니다.
- INTERNET_OPEN_TYPE_DIRECT 인터넷에 직접 연결합니다.
- INTERNET_OPEN_TYPE_PROXY CERN 프록시를 통해 연결합니다.
4. FTP에 접속하기
CString IpAddress = L"여기에 ip주소 넣으세요";
CString Password = L"여기에 비밀번호 넣으세요";
CString UserName = L"여기에 사용자 id 넣으세요";
if (mh_ftp_session) { //세션에 성공했을 때
mh_ftp_connection = ::InternetConnect(mh_ftp_session,IpAddress ,
INTERNET_DEFAULT_FTP_PORT, UserName , Password ,
INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, (DWORD_PTR)this); //INTERNET_SERVICE_FTP //INTERNET_SERVICE_HTTP
}
InternetConnect함수를 이용해서 FTP와 연결을 할건데 TCP/IP 기반이기 때문에 INTERNET_DEFAULT_FTP_PORT 값을 이용하여 인자값에 넣어준다.
INTERNET_DEFAULT_FTP_PORT==21(기본 포트)
5. 핸들 정리
사용한 핸들은 정리한다.
if (mh_ftp_connection!=NULL) {
::InternetCloseHandle(mh_ftp_connection);
}
if (mh_ftp_session != NULL) {
::InternetCloseHandle(mh_ftp_session);
}
728x90
반응형