[WinAPI] FTP에 대하여(특징, 포트, 모드 차이점) – 1

최근에 회사에서 FTP 기능을 도입하기 위해 FTP에 대해 조사 할 일이 생겼는데, 조사한 내용을 정리하려 합니다. FTP(File Transfer Protocol)는 파일을 전송하기 위해 만들어진 프로토콜로서, 파일 전송 프로토콜이라고도 합니다.FTP는 TCP/IP 프로토콜을 가지고, 서버와 클라이언트의 사이의 파일 데이터를 전송하기 위해 만들어진 프로토콜입니다. HTTP 프로토콜은 문자, 사진, 음악, 동영상, 컨텐츠 등등 간단하게 사용할 수 있습니다. 하지만 큰 크기를 … Read more

[C++] 가상 함수(Virtual Function)

가상 함수는 객체 지향 프로그래밍에서, 상속 받는 클래스 내에서 오버라이딩 될 수 있는 함수입니다.virtual 키워드를 붙여 사용가능합니다.virtual을 붙이면 파생 클래스에서 재정의할 것으로 보이는 멤버 함수를 의미합니다. 사용 방법은 아래와 같습니다. 우선 아래 코드를 보며 virtual이 없는 상태에서 동작을 설명하겠습니다. CParent를 상속받은 CChild 클래스가 있고, main 함수에서 CChild를 생성 하고 CParent *형으로 주소를 받습니다.pParent에서 Print 함수를 … Read more

[C++] 자료형과 범위 – sizeof

C++에서 사용하는 데이터 형식의 종류(자료형)와 그 값의 범위는 아래와 같습니다. 해당 값은 아래 코드와 같이 sizeof로 확인이 가능합니다. 일반적으로 데이터를 표현할 때 데이터 비트 수가 n개이면 2의 n승까지 데이터 표현이 가능합니다.예를 들어 unsigned char의 경우 8bit(=1Byte)이기 때문에 2의 8승, 즉 0 ~ 255까지 표현이 가능한 것입니다. 하지만 부호가 있는 signed 자료형을 표현할 때는, 아래 그림과 … Read more

[WinAPI] GetCurrentThreadId, 쓰레드 식별자

GetCurrentThreadID에 대해 알아보겠습니다. 프로그램을 개발하고 배포를 하면 개발자도 사람이다 보니 오류가 생기는 경우가 많이 있습니다.유지보수 하는 것 또한 개발자가 해야할 일 인데, 이 경우 보통 로그를 분석하거나, Debug Output, TRACE를 사용하여 코드 분석을 많이 하게 됩니다.이것은 매우 효율적인 방법이지만 GetCurrentThreadID를 사용하면 더욱 구별하기 쉬워집니다. 함수 원형은 아래와 같습니다. 매개변수는 없으며 반환값으로 쓰레드 식별자를 반환합니다. 예를들어 아래와 … Read more

[C++ STL] Set 컨테이너 사용 예제

오늘은 Set Container에 대해 알아보겠습니다. 컨테이너들 보면 다 비슷 비슷합니다..만 몇가지 특성과 함께 알아보겠습니다. 헤더파일은 아래와 같습니다. set 컨테이너는 노드 기반의 컨테이너입니다.유일한 key값을 입력 가능하며, key값은 중복될 수 없습니다. 입력된 원소는 자동으로 정렬됩니다.(오름차순 default) 선언 방법은 아래와 같습니다. 멤버 함수로는 아래와 같습니다. 예제 코드는 아래와 같습니다.

[WinAPI] 내 경로 얻기, GetModuleFileName

간혹 개발을 하다보면, 현재 실행하고있는 내 프로그램의 경로를 알아야 할 때가 있는데, 그럴 때 GetModuleFileName 함수를 사용하면 쉽게 알아낼 수 있습니다. GetModuleFileName의 원형은 아래와 같습니다. 필요한 헤더파일은 아래와 같습니다. 매개 변수에 대한 설명은 아래와 같습니다. 함수가 성공하면 반환 값은 버퍼에 복사되는 문자열의 길이입니다.함수가 실패하면 반환값은 0이고, 확장 정보는 GetLastError에서 알 수 있습니다. 예시 코드는 아래와 … Read more

[WinAPI] 현재 언어 설정 읽기 – GetUserDefaultUILanguage

오늘은 언어 설정값을 읽어오는 방법을 알아보겠습니다. 배포하는 프로그램이 다국어를 지원하는 경우, 현재 System Locale 무엇인지 알아야 합니다. 이것은 제어판 -> 시계 및 국가 -> 국가 또는 지역 -> 관리자 옵션 탭에서 시스템 로캘 변경을 눌러 알 수 있습니다. 해당 Locale 값을 GetUserDefaultUILanguage 함수를 통해 알아 볼 수 있습니다. GetUserDefaultUILanguage를 사용하기 위해선 아래 조건을 만족해야합니다. Minimum supported client Windows 2000 Professional [desktop apps | UWP apps] … Read more

[C++ STL] queue, 큐 사용 예제

이번 글에서는 queue, 큐 사용 예제를 알아보겠습니다. 헤더 파일은 아래와 같습니다. queue의 멤버 함수는 아래와 같습니다. 사용 예제입니다.

[C++] template, 템플릿 사용 예제 – 2. 클래스 템플릿

이번 글에서는 클래스 템플릿에 대해 알아보겠습니다. 클래스 템플릿도 함수 템플릿처럼 만드시면 됩니다. 클래스 멤버 변수나 함수에 템플릿을 지정해주셔서 위와 같이 사용하시면 됩니다.만약 클래스 내부에 멤버 함수를 선언하고, 외부에 멤버 함수를 정의하면 아래와 같이 코딩해야 합니다. 템플릿 매개변수를 여러 개 지정할 수 있습니다. 템플릿 매개변수 T 이외에 다른 템플릿 매개변수를 추가하고 싶으시면 아래와 같이 작업합니다. 전체 … Read more

[C++] template, 템플릿 사용 예제 – 1. 함수 템플릿, 특수화

template는 매개변수의 타입에 따라 함수나 클래스를 생성하는 C++의 일반화 프로그래밍의 메커니즘입니다.template를 사용하면 같은 작업, 다른 매개변수에 따라 동작하는 함수나 클래스를 한번에 정의할 수 있습니다. 함수 템플릿은 다음과 같은 방식으로 사용합니다. typename키워드 대신 class 키워드를 사용하셔도 됩니다.(C++ 98 부터 typename 키워드 추가됨) 아래 예제는 두개의 매개 변수의 합을 표시하는 Sum 함수를 template로 작성한 것입니다. 위 함수를 … Read more