자료 참고 안내 1. 본 자료실의 모든 자료 저작권은 ㈜에이치앤에스에 있습니다.

본 자료는 개발하시는데 참고자료 용도로 사용하실 수 있으며 저작권 표시 없이 복사,게재, 출판 하실 수 없습니다. 외부 게재 사용 시 반드시 출처 항목에 회사명과 사이트 주소를 반드시 명시해 주시기 바랍니다.
[표기 예] 출처 : ㈜에이치앤에스(www.hnsts.co.kr) 또는 ㈜HNS(www.hnsts.co.kr)

2. 제품 개발 시 내용과 예제 코드는 수정 및 검증작업을 직접 하셔야 하며 문제 발생에 대한 책임은 ㈜HNS사와 무관합니다.

본사는 자료를 최신내용으로 유지하기 위해 노력하고 있으며 제공되는 정보의 오류 및 내용이 정확하지 않을 경우 사전 공지 없이 업데이트 될 수 있습니다. 자료의 문제점 발견 시 본사로 문의주시면 검토하여 자료를 수정하도록 하겠습니다.

SmartFTP를 활용한 C++(MFC)용 FTP Client 예제
작성일 2018-08-28 수정일 2022-10-06 조회수 2261
분류 Knowhow
적용
플랫폼
키워드 SMARTFTPCLIENT 예제, FTP 송수신 예제
첨부파일 Tech52_SmartFTP용FTPClient_예제소스파일.zip

본 자료는
1. 프로그램 동작 전 준비사항
1-1. 유선 또는 무선(HNS 무선랜 권장)으로 FTP 서버(Server)와 연결 설정
1-2. FTP Server 또는 원격 FTP 계정 필요(ALFTP Server 설정 방법 안내)
1-3. 클라이언트(Client)의 환경설정
2. 본 예제 실행 시 주의사항
3. FTP 서버(Server)와 FTP 클라이언트(Client) 프로그램 동작 순서
4. SmartFTP 관련 메서드
순서로 진행합니다.

본 자료는 SmartX-Solution중 SmartFTP를 응용하여 간단한 FTP Client 프로그램을 만든 예제이며 IEC-Series(클라이언트) → PC(FTP 서버)로 연결하여 파일을 업로드 / 다운로드 가능합니다.
본 자료에서 클라이언트(IEC-Series)와 서버(PC) 연결 방법, FTP 서버 측의 환경설정, Client 측의 환경설정, 예제 프로그램 사용 시 주의사항, FTP 관련 메서드와 전체 소스를 제공합니다. SmartFTP에 대하여 보다 자세한 설명은 자료실 > SmartX Framework 관련 > SmartX 프로그래밍 가이드 > SmartFTP를 참조하시기 바랍니다.


1. 프로그램 동작 전 준비사항 1-1. 유선 또는 무선(HNS 무선랜 권장)으로 FTP Server와 연결 설정

유/무선으로 연결 방법은 다음과 같습니다. (IEC-Series ↔ ALFTP 서버), (IEC-Series ↔ 공유기 ↔ ALFTP 서버)

FTP설명

1-2. FTP Server 또는 원격 FTP 계정 필요(ALFTP Server 설정 방법 안내)

ALFTP를 인터넷에서 다운로드 받아 설치 후 [메뉴] Tools → Run Server 선택

FTP 설정방법

① Server IP address : 서버 측 IP 주소
② User ID : 서버 측 ALFTP의 UserID 지정
③ Password : 서버 측 ALFTP의 Password 지정
④ Port : ALFTP가 사용하는 포트 번호
⑤ DownLoad와 UpLoad를 위한 홈 디렉토리 설정
⑥ OK 버튼으로 설정 내용 저장


1-3. 클라이언트(Client)의 환경 설정

프로그램 테스트 전에 IEC-Series에서 맥 어드레스(MacAddress)와 고정 IP를 설정 후 레지스트리 저장(Registry Save)을 반드시 해주어야 합니다.

  • [STEP-1] 맥어 드레스 설정 윈도우 CE 바탕화면 → System Configs
    System Configs
  • [STEP-2] 시작 → 설정 → 네트워크 및 전화 접속 연결
    네트워크 및 전화접속연결
  • [STEP-3] 레지스트리 저장. 윈도우 CE 바탕화면 → Registry Save
    레지스트리 저장
  • ※ 통신 환경의 문제로 동작이 안될수도 있으니 환경 설정 후 장비 간 핑(Ping) Test를 해보시는 것을 권장합니다.


2. 본 예제 실행 시 주의사항 경로 문자열 사용 시 주의사항(C#, VB.NET, CPP)
업/다운 시 파일 경로
1. 서버 측 경로 (FTP Server) 경로 구분문자 // 사용
2. 클라이언트 측 경로 (IEC-Series) 경로 구분문자 \\ 사용
Ex) Flash Disk\\1.png
Ex) SD Card\\Sub\\2.png
Flash~ 또는 SD~경로의 맨 앞은 구분문자(\\)를 미 삽입

※ 서버 측 경로 (FTP Server). 서버의 최상위가 Current 폴더인 경우

※ 서버 측 경로 (FTP Server). 서버의 Sub 폴더가 Current 폴더인 경우

주의
- 파일과 폴더 이름의 대/소문자를 구분하여 사용하기 바랍니다.
- 파일 경로상 하위 폴더는 자동 생성되지 않으므로 다운로드/업로드 전에 꼭 생성해줘야 합니다.
- 예제 실행 시 참조 DLL인 SmartFTPCore.DLL 파일이 필요하므로 참조 DLL 폴더에서 SmartFTPCore.DLL 파일을 실행 프로그램과 함께 복사해 주시기 바랍니다.
- 외부 클라이언트에서 FTP Server로 접속이 안 되는 경우에는 방화벽이 허용되지 않아서 발생하는 문제일 수 있으므로 방화벽 정책에서 해당 부분을 제외해 주시기 바랍니다.

참고자료실 > SmartX Framework 관련 > 3. SmartX 프로그래밍 가이드 > SmartFTP 내용을 참고하시기 바랍니다.

3. FTP 서버와 FTP 클라이언트 프로그램 동작 순서
FTP Server(PC)
FTP Server(PC)

① Server IP address를 설정합니다. CMD 창에서 "ipconfig" 명령어로 확인 가능합니다.
② User ID를 설정합니다. ALFTP의 User ID를 설정합니다.
③ Password를 설정합니다. ALFTP의 Password를 설정합니다.
④ Port를 설정합니다. FTP를 기본으로 사용하는 포트는 21번 포트입니다.
⑤ Client가 FTP Server로 접속하는 경우 보여질 홈 디렉토리를 설정합니다.
⑥ OK를 클릭하여 FTP 서버(Server)를 시작합니다.

FTP Client (IEC-Series)
FTP Client

⑦ FTP Server Address(①)을 입력합니다.
⑧ FTP Server 접속에 사용할 User ID(②)를 입력합니다.
⑨ User ID에 맞는 Password(③)을 입력합니다.
⑩ FTP Server에 접속할 포트 번호(④)를 입력합니다.
⑪ Passive Mode(클라이언트가 서버에서 데이터를 얻는 방식)를 선택합니다.
⑫ Connect 버튼을 클릭하여 FTP Server와 연결합니다.
⑬ 연결이 성공한 경우 하단의 박스에서 파일을 선택하고 Download 버튼을 클릭하면 FTP Ser
ver(PC) → FTP Client(IEC-Series)로 파일을 다운로드 합니다.
이때 사용자가 다운로드 되는 파일의 위치를 직접 지정 가능합니다.
⑭ 연결이 성공한 경우 Upload 버튼을 클릭하고 IEC-Series(SD Card와 USB 메모리 포함)에서 특정 파일을 선택하면 해당 파일을 FTP Server로 업로드 가능합니다. 파일이 정상 업로드되면 하단의 박스에서 확인 가능합니다.



4. SmartFTP 관련 메서드
설정된 접속 정보로 연결
BOOL Connect();
(인자) : 없음
(반환값) True : 연결 성공, False : 연결 실패

연결 해제
BOOL DisConnect();
(인자) : 없음
(반환값) True : 연결 해제 성공, False : 연결 해제 실패

현재 경로를 Root 디렉토리로 설정합니다. Root 디렉토리란 FTP Server로 접속할 때 보여지는 디렉토리를 의미합니다.
BOOL SetRootDirectory();
(인자) 없음
(반환값) True : 성공, False : 실패

현재 경로를 설정합니다.
BOOL SetCurrentDirectory(LPTSTR strPath);
(인자) strPath : 경로
(반환값) True : 성공, False : 실패

현재 설정된 경로를 가져옵니다.
BOOL GetCurrentDirectory(LPTSTR strPath);
(인자) strPath : 경로
(반환값) True : 성공, False : 실패

현재 설정된 경로에서 폴더를 생성합니다.
BOOL CreateFolder(LPTSTR strFolderName);
(인자) strFolderName : 폴더명
(반환값) True : 성공, False : 실패

현재 설정된 경로에서 폴더를 삭제합니다.
BOOL DeleteFolder(LPTSTR strFolderName);
(인자) strFolderName : 폴더명
(반환값) True : 성공, False : 실패

현재 설정된 경로에서 파일을 삭제합니다.
BOOL DeleteFiles(LPTSTR strFileName);
(인자) strFileName : 삭제할 파일 이름
(반환값) True : 성공, False : 실패

현재 설정된 경로에서 폴더 또는 파일의 이름을 변경합니다.
BOOL ReName(LPTSTR strOldName, LPTSTR strNewName);
(인자) strOldName : 변경 전 이름
(인자) strNewName : 변경 후 이름
(반환값) True : 성공, False : 실패

설정된 경로의 파일을 다운로드합니다. Non-Blocking 함수로 호출 시 바로 리턴합니다. GetPercentage() 함수를 통해 현재 파일의 다운로드 상태를 확인할 수 있습니다.
BOOL FileDownload(LPTSTR strFTPFilePathName, LPTSTR strLocalFilePathName);
(인자) strFTPFilePathName : FTP 서버의 다운로드 받을 경로와 파일명
(인자) strLocalFilePathName : 다운로드 시 Local에 저장될 경로와 파일 이름
(반환값) True : 성공, False : 실패

설정된 경로의 파일을 업로드합니다. Non-Blocking 함수로 호출 시 바로 리턴합니다. GetPercentage() 함수를 통해 현재 파일의 업로드 상태를 확인할 수 있습니다.
BOOL FileUpload(LPTSTR strLocalFilePathName, LPTSTR strFTPFilePathName);
(인자) strFTPFilePathName : FTP 서버의 업로드 경로와 파일명
(인자) strLocalFilePathName : 업로드될 Local 파일 경로와 파일 이름
(반환값) True : 성공, False : 실패

현재 설정된 경로의 파일 및 폴더 리스트를 가져옵니다.
BOOL GetFileList(LPTSTR strRetList);
(인자) strRetList : 파일 및 폴더 리스트를 다음의 형식으로 리턴합니다.
"파일명:폴더명\:파일명:파일명:파일명:폴더명\:....."
인자의 배열 크기는 3000으로 설정하시기 바랍니다.
즉, 호출 시 인자의 배열의 크기를 3000으로 할당하여 전달하시기 바랍니다.
(반환값) True : 성공, False : 실패

현재 다운로드 및 업로드 시 진행 상태를 확인합니다.
int GetPercentage();
(인자) 없음
(반환값) 0~100% : 백분율, -1 : 실패

현재 다운로드 및 업로드 시 진행을 취소합니다.
void FileUpNDownloadCancel();
(인자) 없음
(반환값) 없음
C++ 예제코드
소스 코드는 참고 및 학습용으로 버그 및 여러 가지 문제가 있을 수 있습니다.

[예제 동작 순서] SmartFTP를 활용한 C++(MFC)용 FTP Client 예제 테스트 (IEC1000-Series 기준)
STEP-1. FTP 서버 연결
STEP-2. FTP 서버의 현재 경로의 파일과 폴더를 읽어 리스트 컨트롤에 출력
STEP-3. 파일 및 폴더의 항목을 더블클릭할 경우
STEP-4. 선택된 파일 다운로드 버튼
STEP-5. 선택된 파일 업로드 버튼

// STEP-1. FTP 서버 연결
void CSmartFTPEVCDlg::OnBnClickedButconnect()
{
// FTP 서버 연결
if(m_SmartFTP.Connect() == TRUE)
{
// 연결 성공
m_LabStatus.SetWindowTextW(L"FTP Server Connected...");

// 연결 성공 시 FTP 서버의 Root에 있는 모든 파일과 폴더를 읽어와
// 리스트 컨트롤에 출력합니다.
UpdateFileList();
}
else
{
// 연결 실패
m_LabStatus.SetWindowTextW(L"FTP Server Connect Fail...");
}
}

// STEP-2. FTP 서버의 현재 경로의 파일과 폴더를 읽어 리스트 컨트롤에 출력
void CSmartFTPEVCDlg::UpdateFileList()
{
// 현재 경로의 파일과 폴더 리스트를 얻습니다.
if(m_SmartFTP.GetFileList(strListFileList) == TRUE)
{
// 현재 리스트 컨트롤이 모든 항목을 삭제합니다.
m_FileLists.DeleteAllItems();

// 상위 이동 표시 항목 추가( .. 항목을 선택하면 상위 경로로 이동합니다.)
li.mask= LVIF_TEXT | LVIF_IMAGE;
li.iItem = nCount++;
li.iSubItem = 0;
li.pszText = L"..";
li.iImage = 5;
m_FileLists.InsertItem(&li);

// ":"구분자로 읽어들인 항목을 분리합니다.
fileItems = wcstok( strListFileList, sepA);

while(fileItems != NULL)
{
strBlock.Format(L"%s", fileItems);

li.mask= LVIF_TEXT | LVIF_IMAGE;
li.iItem = nCount;
li.iSubItem = 0;

// 항목이 폴더인지
if(strBlock.Right(1) == L"\\")
{
// 폴더인 경우 폴더 구분 문자 삭제
li.iImage = 1;
strBlock.TrimRight(L'\\');
li.pszText = strBlock.GetBuffer();
bFolder = true;
}
else
{
// 파일인 경우 리스트컨트롤에 추가하기 위해
// 이름 및 아이콘 설정
li.pszText = strBlock.GetBuffer();
li.iImage = GetIconIndex(strBlock.GetBuffer());
bFolder = false;
}

// 파일 및 폴더 항목 추가
m_FileLists.InsertItem(&li);

// 구분 항목 설정(파일인지 폴더인지 표시)
li.mask = LVIF_TEXT;
li.iItem = nCount;
li.iSubItem = 1;

if(bFolder == true)
{
li.pszText = L"Folder";
}
else
{
li.pszText = L"File";
}

// 구분 항목 추가
m_FileLists.SetItem(&li);
nCount++;

// Get next token
fileItems = wcstok(NULL, sepA);
}
}
else
{
// FTP 서버로부터 현재 경로의 파일,폴더 읽기 실패
// 리스트 컨트롤의 모든 항목 삭제
m_FileLists.DeleteAllItems();

li.mask= LVIF_TEXT | LVIF_IMAGE;
li.iItem = nCount++;
li.iSubItem = 0;
li.pszText = L"..";
li.iImage = 5;
m_FileLists.InsertItem(&li);
}
}
// 선택된 항목의 상위 경로를 얻기 위한 코드.
CString CSmartFTPEVCDlg::GetParentPath(CString strPath)
{
CString strParentPath;

if(strPath.GetLength() == 0)
{
return strPath;
}
int cutpos = strPath.ReverseFind('\\');

if(cutpos == -1)
{
AfxMessageBox(L"지정된 경로가 유효하지 않음!");
return strPath;
}
strParentPath = strPath.Left(cutpos);

if(strParentPath.Find('\\', 0) == -1)
{
// Root인 경우
strParentPath += L"\\";
}
return strParentPath;
}

void CSmartFTPEVCDlg::OnDestroy()
{
CDialog::OnDestroy();
m_FileLists.SetImageList(m_OldSmallImage, LVSIL_SMALL);
}

// STEP-3. 파일 및 폴더의 항목을 더블 클릭할 경우
void CSmartFTPEVCDlg::OnNMDblclkLstfilelist(NMHDR *pNMHDR, LRESULT *pResult)
{
// 현재 리스트컨트롤에서 선택된 항목의 Index를 얻습니다.
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
iSelect = pNMListView->iItem;

// 현재 선택된 항목의 Text를 얻습니다.
strPath = m_FileLists.GetItemText(iSelect, 0);
strContent = m_FileLists.GetItemText(iSelect, 1);

// 상위 폴더 이동인 경우
if(iSelect == 0)
{
// 현재 경로를 얻는다.
m_SmartFTP.GetCurrentDirectory(strTPath);
strPath.Format(L"%s", strTPath);
strPath.Replace(L'/', L'\\');
strPath.TrimRight(L'\\');

// Root가 아니면 상위 경로를 얻습니다.
if(strPath.GetLength() >= 3)
{
// 현재 경로의 상위 경로를 얻는다.
strNewPath = GetParentPath(strPath);
wsprintf(strTNewPath, L"%s", strNewPath.GetBuffer());

// 상위경로를 현재 경로로 설정합니다.
m_SmartFTP.SetCurrentDirectory(strTNewPath);

// 현재 설정 경로가 변경되어 다시 리스트 컨트롤에
// 파일/폴더를 갱신합니다.
UpdateFileList();
}
return;
}

// 선택된 항목이 폴더인 경우 하위 경로로 이동합니다.
if(strContent == L"Folder")
{
// 현재 경로를 얻습니다.
m_SmartFTP.GetCurrentDirectory(strTNowPath);

// 아래 코드는 현재 폴더에 현재 선택된 항목을 결합하여 새로운 경로를 생성합니다
// Ex : 현재 경로(strTNowPath) => "AAA\\BBB", 선택항목(strPath) => "CCC",
// 결과(strTNewPath) => "AAA\\BBB\\CC"
strNowPath.Format(L"%s", strTNowPath);
strNowPath.Replace(L'/', L'\\');
strNewPath.Format(L"%s%s", strNowPath, strPath);
strNewPath.Replace(L'/', L'\\');
strNewPath.TrimRight(L'\\');
wsprintf(strTNewPath, L"%s", strNewPath.GetBuffer());

// 새로운 경로를 현재 경로로 설정합니다.
m_SmartFTP.SetCurrentDirectory(strTNewPath);

// 현재 설정 경로가 변경되어 다시 리스트 컨트롤에 파일/폴더를 갱신합니다.
UpdateFileList();
}
*pResult = 0;
}

// STEP-4. 선택된 파일 다운로드 버튼
void CSmartFTPEVCDlg::OnBnClickedButdownload()
{
// 다운로드될 Local 경로를 설정하기위한 탐색창 로드
BROWSEINFO bi;
ZeroMemory(&bi, sizeof(BROWSEINFO));
bi.hwndOwner = this->GetSafeHwnd();
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
TCHAR szPath[MAX_PATH] = {0};
SHGetPathFromIDList(pidl, szPath);

if(szPath[0] == NULL)
{
return;
}

// 선택된 Local 경로에 다운로드할 파일명을 결합 처리
strFileName = m_FileLists.GetItemText(m_iSelectItemIndex, 0);
strLocalPath.Format(L"%s\\%s", szPath, strFileName);
strLocalPath.Replace(L"\\\\", L"\\");
wsprintf(strTLocalPath, L"%s", strLocalPath);

// FTP 서버의 선택된 파일의 경로와 파일명을 결합 처리
m_SmartFTP.GetCurrentDirectory(strTFTPCurrentPath);
strFTPPath.Format(L"%s\\%s", strTFTPCurrentPath, strFileName);
strFTPPath.Replace(L'/', L'\\');
strFTPPath.Replace(L"\\\\", L"\\");
wsprintf(strTFTPCurrentPath, L"%s", strFTPPath);

// FTP로부터 선택된 파일을 다운로드 시작
if(m_SmartFTP.FileDownload(strTFTPCurrentPath, strTLocalPath) == TRUE)
{
// 다운로드 진행 상태를 표시하기 위한 타이머 설정
SetTimer(3, 100, NULL);
}
else
{
m_LabStatus.SetWindowTextW(L"Download Fail...!!!");
}
}

// 다운로드 시 현재 선택된 파일을 얻기 위한 처리
void CSmartFTPEVCDlg::OnNMClickLstfilelist(NMHDR *pNMHDR, LRESULT *pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
m_iSelectItemIndex = pNMListView->iItem;

*pResult = 0;
}
// STEP-5. 선택된 파일 업로드 버튼
void CSmartFTPEVCDlg::OnBnClickedButupload()
{
CFileDialog fileDlg(TRUE);

// 파일 선택 후 다이얼로그 창 출력
if(fileDlg.DoModal() == IDOK)
{
// 선택된 Local 파일의 경로 및 파일명을 얻는다.
strLocalPath.Format(L"%s", fileDlg.m_ofn.lpstrFile);
wsprintf(strTLocalPath, L"%s", strLocalPath.GetBuffer());

strFileName.Format(L"%s", fileDlg.m_ofn.lpstrFileTitle);
// 업로드를 위한 업로드 경로와 파일명을 설정합니다.
m_SmartFTP.GetCurrentDirectory(strTFTPCurrentPath);
strFTPPath.Format(L"%s\\%s", strTFTPCurrentPath, strFileName.GetBuffer()); strFTPPath.Replace(L'/', L'\\');
strFTPPath.Replace(L"\\\\", L"\\");
wsprintf(strTFTPPath, L"%s", strFTPPath.GetBuffer());

// 선택된 파일을 업로드 시작함
if(m_SmartFTP.FileUpload(strTLocalPath, strTFTPPath) == TRUE)
{
// 업로드 진행상태를 표시하기 위한 타이머 설정
SetTimer(7, 100, NULL);
}
else
{
m_LabStatus.SetWindowTextW(L"Upload Fail...!!!");
}
}
}
맨 위로
팝업닫기

(주)에이치앤에스('http://hnsts.co.kr/'이하 '(주)에이치앤에스 웹사이트')는 개인정보보호법에 따라 이용자의 개인정보 보호 및 권익을 보호하고 개인정보와 관련한 이용자의 고충을 원활하게 처리할 수 있도록 다음과 같은 처리방침을 두고 있습니다.

(주)에이치앤에스 웹사이트는 개인정보처리방침을 개정하는 경우 웹사이트 공지사항(또는 개별공지)을 통하여 공지할 것입니다.

○ 본 방침은 2011년 4월 1일부터 시행됩니다.

1. 개인정보의 처리 목적 (주)에이치앤에스 웹사이트는 개인정보를 다음의 목적을 위해 처리합니다. 처리한 개인정보는 다음의 목적 이외의 용도로는
사용되지 않으며 이용 목적이 변경될 시에는 사전동의를 구할 예정 입니다.
가. 민원사무 처리
민원인의 신원 확인, 민원사항 확인, 사실조사를 위한 연락 · 통지, 처리결과 통보 등을 목적으로 개인정보를 처리합니다.
2. 개인정보 파일 현황
1. 개인정보 파일명 : 고객의 소리
  • - 개인정보 항목 : 이메일, 휴대전화번호, 자택전화번호, 이름, 서비스 이용 기록, 접속 로그, 쿠키, 접속 IP 정보
  • - 수집방법 : 웹사이트
  • - 보유근거 : 이용자 동의
  • - 보유기간 : 3년
3. 개인정보의 제3자 제공에 관한 사항
① (주)에이치앤에스 웹사이트는 원칙적으로 이용자의 개인정보를 제1조에서 명시한 목적 범위 내에서 처리하며, 본래의 범위를 초과하여 처리하거나 제3자에게 제공하지 않습니다.
다만, 다음의 경우에는 개인정보를 제3자에게 제공할 수 있습니다.
  • – 이용자가 사전에 제3자 제공 및 공개에 동의한 경우
  • – 법령 등에 의해 제공이 요구되는 경우
  • – 서비스의 제공에 관한 계약의 이행을 위하여 필요한 개인정보로서 경제적/기술적인 사유로 통상의 동의를 받는 것이 현저히 곤란한 경우
  • – 개인을 식별하기에 특정할 수 없는 상태로 가공하여 이용하는 경우
4. 정보주체의 권리,의무 및 그 행사방법 이용자는 개인정보주체로서 다음과 같은 권리를 행사할 수 있습니다.
① 정보주체는 (주)에이치앤에스 웹사이트에 대해 언제든지 다음 각 호의 개인정보 보호 관련 권리를 행사할 수 있습니다.
  • 1. 개인정보 열람요구
  • 2. 오류 등이 있을 경우 정정 요구
  • 3. 삭제요구
  • 4. 처리정지 요구
② 제1항에 따른 권리 행사는 (주)에이치앤에스 웹사이트에 대해 개인정보 보호법 시행규칙 별지 제8호 서식에 따라 서면, 전자우편, 모사전송(FAX) 등을 통하여 하실 수 있으며 (주)에이치앤에스 웹사이트는
이에 대해 지체 없이 조치하겠습니다.
③ 정보주체가 개인정보의 오류 등에 대한 정정 또는 삭제를 요구한 경우에는 (주)에이치앤에스 웹사이트는 정정 또는 삭제를 완료할 때까지 당해 개인정보를 이용하거나 제공하지 않습니다.
④ 제1항에 따른 권리 행사는 정보주체의 법정대리인이나 위임을 받은 자 등 대리인을 통하여 하실 수 있습니다. 이 경우 개인정보 보호법 시행규칙 별지 제11호 서식에 따른 위임장을
제출하셔야 합니다.
5. 제3자에게의 개인정보 제공
① (주)에이치앤에스 웹사이트는 다음의 개인정보 항목을 처리하고 있습니다.
<민원사무 처리>
– 필수항목 : 이름, 휴대전화번호, 자택전화번호, 이메일, 서비스 이용 기록, 접속로그, 쿠키, 접속IP 정보
6. 개인정보의 파기
(주)에이치앤에스 웹사이트는 원칙적으로 개인정보 처리목적이 달성된 경우에는 지체없이 해당 개인정보를 파기합니다. 파기의 절차, 기한 및 방법은 다음과 같습니다.
  • –파기절차 이용자가 입력한 정보는 목적 달성 후 별도의 DB에 옮겨져(종이의 경우 별도의 서류) 내부 방침 및 기타 관련 법령에 따라 일정기간 저장된 후 혹은 즉시 파기됩니다. 이 때, DB로 옮겨진 개인정보는 법률에 의한 경우가 아니고서는 다른 목적으로 이용되지 않습니다.-파기기한이용자의 개인정보는 개인정보의 보유기간이 경과된 경우에는 보유기간의 종료일로부터 5일 이내에, 개인정보의 처리 목적 달성, 해당 서비스의 폐지, 사업의 종료 등 그 개인정보가 불필요하게 되었을 때에는 개인정보의 처리가 불필요한 것으로 인정되는 날로부터 5일 이내에 그 개인정보를 파기합니다.
  • –파기방법 전자적 파일 형태의 정보는 기록을 재생할 수 없는 기술적 방법을 사용합니다. 종이에 출력된 개인정보는 분쇄기로 분쇄하거나 소각을 통하여 파기합니다.
7. 개인정보의 안전성 확보 조치
(주)에이치앤에스 웹사이트는 개인정보보호법 제29조에 따라 다음과 같이 안전성 확보에 필요한 기술적/관리적 및 물리적 조치를 하고 있습니다.
1. 정기적인 자체 감사 실시
개인정보 취급 관련 안정성 확보를 위해 정기적(분기 1회)으로 자체 감사를 실시하고 있습니다.
2. 개인정보 취급 직원의 최소화 및 교육
개인정보를 취급하는 직원을 지정하고 담당자에 한정시켜 최소화 하여 개인정보를 관리하는 대책을 시행하고 있습니다.
3. 내부관리계획의 수립 및 시행
개인정보의 안전한 처리를 위하여 내부관리계획을 수립하고 시행하고 있습니다.
4. 해킹 등에 대비한 기술적 대책
(주)에이치앤에스 웹사이트는 해킹이나 컴퓨터 바이러스 등에 의한 개인정보 유출 및 훼손을 막기 위하여 보안프로그램을 설치하고 주기적인 갱신·점검을 하며 외부로부터 접근이 통제된 구역에
시스템을 설치하고 기술적/물리적으로 감시 및 차단하고 있습니다.
5. 개인정보의 암호화
이용자의 개인정보는 비밀번호는 암호화 되어 저장 및 관리되고 있어, 본인만이 알 수 있으며 중요한 데이터는 파일 및 전송 데이터를 암호화 하거나 파일 잠금 기능을 사용하는 등의
별도 보안기능을 사용하고 있습니다.
6. 접속기록의 보관 및 위변조 방지
개인정보처리시스템에 접속한 기록을 최소 6개월 이상 보관, 관리하고 있으며, 접속 기록이 위변조 및 도난, 분실되지 않도록 보안기능 사용하고 있습니다.
7. 개인정보에 대한 접근 제한
개인정보를 처리하는 데이터베이스시스템에 대한 접근권한의 부여,변경,말소를 통하여 개인정보에 대한 접근통제를 위하여 필요한 조치를 하고 있으며 침입차단시스템을 이용하여
외부로부터의 무단 접근을 통제하고 있습니다.
8. 문서보안을 위한 잠금장치 사용
개인정보가 포함된 서류, 보조저장매체 등을 잠금장치가 있는 안전한 장소에 보관하고 있습니다.
9. 비인가자에 대한 출입 통제
개인정보를 보관하고 있는 물리적 보관 장소를 별도로 두고 이에 대해 출입통제 절차를 수립, 운영하고 있습니다.
8. 개인정보 보호책임자 작성
① (주)에이치앤에스 웹사이트는 개인정보 처리에 관한 업무를 총괄해서 책임지고, 개인정보 처리와 관련한 정보주체의 불만처리 및 피해구제 등을 위하여 아래와 같이 개인정보 보호책임자를
지정하고 있습니다.
▶ 개인정보 보호책임자
성명 : 김진효
소속 : (주)에이치앤에스
전화번호 : 02-6402-8001
이메일 : hns@hnsts.co.kr
② 정보주체께서는 (주)에이치앤에스 웹사이트의 서비스(또는 사업)을 이용하시면서 발생한 모든 개인정보 보호 관련 문의, 불만처리, 피해구제 등에 관한 사항을 개인정보 보호책임자 및
담당부서로 문의하실 수 있습니다. (주)에이치앤에스 웹사이트는 정보주체의 문의에 대해 지체 없이 답변 및 처리해드릴 것입니다.
9. 개인정보침해 구제방법
정보주체는 개인정보침해로부터 구제받고자 하는 경우 다음과 같은 기관에 도움을 요청할 수 있습니다.
▶ 개인정보 침해신고센터 (한국인터넷진흥원 운영)
– 소관업무 : 개인정보 침해사실 신고, 상담 신청
– 홈페이지 : privacy.kisa.or.kr
– 전화 : (국번없이) 118
– 주소 : (138-950) 서울시 송파구 중대로 135 한국인터넷진흥원 개인정보침해신고센터
▶ 개인정보 분쟁조정위원회 (한국인터넷진흥원 운영)
– 홈페이지 : privacy.kisa.or.kr
– 전화 : (국번없이) 118
– 주소 : (138-950) 서울시 송파구 중대로 135 한국인터넷진흥원 개인정보침해신고센터
10. 개인정보 처리방침 변경
① 이 개인정보처리방침은 시행일로부터 적용되며, 법령 및 방침에 따른 변경내용의 추가, 삭제 및 정정이 있는 경우에는 변경사항의 시행 7일 전부터 공지사항을 통하여 고지할
것입니다.
팝업닫기

본 웹사이트에 게시된 이메일 주소가 전자우편 수집 프로그램이나 그 밖의 기술적 장치를 이용하여 무단으로 수집되는 것을 거부하며, 이를 위반시 정보통신망법에 의해 형사처벌됨을 유념하시기 바랍니다.

게시일 : 2011.4.1