Loading...
2017. 4. 10. 22:46

Windows API로 시작해보는 소켓 프로그래밍

아직 소켓에 대한 개념을 모르시겠다구요? 아래의 버튼을 클릭하여 Socket 포스트를 미리 읽어보시기 바랍니다. 네트워크 프로그래밍의 기초 - Socket 안녕하세요. 여기는 Windows 개발자를 위한 소켓 프로그래밍 페이지입니다. 위 Socket의 개념 포스트와 더불어, Windows API를 사용하기 때문에 Windows API에 대한 기본 개념과 같이 정확하게 이해하셨다고 판단하고, 글을 써 나가보도록 하겠습니다. WinSock2Windows Socket은 BSD Unix 호환을 위해 그 개념은 굉장히 비슷하지만, Windows 운영체제에 맞춰있기 때문에, 몇 가지 다른 부분이 있습니다. 또, 소켓은 특성상 커널에 요청하여 생성하는 방식이기 때문에, 파일로 구성되어 있는 유닉스와 달리 Window..

2016. 8. 31. 01:09

HANDLE 구조체와 Kernel Object를 이용한 윈도우 프로그래밍

지난 포스팅에 이어 이제 본격적인 코딩에 들어가보도록 하겠습니다. HANDLE 구조체 HANDLE 구조체는 전 포스트에서 적혀있었다시피 Kernel object를 건드리기 위한 구조체입니다. 여러분들이 만약, 파일을 생성하거나 읽거나, 쓰거나 아니면 프로세스를 제어하는 데는 반드시 HANDLE 구조체를 사용하여 어떤 개체를 건드리고 싶은지를 명시해야 합니다. #include int _tmain(int argc, TCHAR* argv[]) { HANDLE hFile = CreateFile(); } 예를 들어 파일을 건드리고자 하는 경우, CreateFile API를 이용해서 기존에 있는 파일을 읽던지, 아니면 파일이 존재하지 않으면 새로 생성하여 WriteFile API를 이용해 데이터를 쓸 수도 있습니다..

2016. 8. 29. 21:16

HANDLE 구조체와 Kernel Object

이 내용을 쓰기 전에 많이 고민을 했던 것은 다름이 아닌 프로세스에 대한 설명과 운영체제 커널에 대한 전반적인 이야기를 포스팅을 해야할까, 하지 않아도 될까 라는 고민을 많이 한 채 이 내용을 바로 다이렉트로 포스팅하게 되었습니다. 그래서, 이 포스팅을 보시기 전에, 반드시 운영체제 커널에 대한 전반적인 이해와 프로세스에 대한 기초적이고, 기본적인 부분을 숙지 후, 이 포스트를 보시면 감사하겠습니다. Kernel Object커널 오브젝트라는 것은 말 그대로 커널 객체입니다. 여러분들이 사용하는 Windows에서 커널 안에 존재하며 그에 의해 관리되는 리소스 정보를 담고 있는 데이터 블록의 일종입니다. 쉽게 한 번 이야기해보겠습니다. 운영체제 커널에는 시스템의 운영을 위해, 파일, 프로세스, 쓰레드가 존재..

2016. 7. 19. 01:48

SBCS, MBCS와 WBCS / 유니코드 프로그래밍이 중요한 이유

이번 포스팅에서는 Charset에 대해서 알아보겠습니다. Charset 부분은 조금 내용이 많으면서도 헷갈리는 부분이 많기 때문에, 잘 숙지하시고, 몸에 베어서 사용하는 것이 좋습니다. 또한 이번 포스팅에서 MBCS와 WBCS를 어떻게 적절히 조합해서 사용할 수 있는지를 알아봅시다. 보통 여러분들이 코딩을하거나 문서를 작성하다보면, "인코딩"이라는 단어를 많이 듣게될 것입니다. 문서 작성에서의 인코딩은 Charset(캐릭터셋)을 의미하는 것이고, 동영상 작업에서는 영상 포맷 등을 의마하는 것이지요. 코딩에서 또한 Charset이 존재합니다. 과거에는 ASCII 코드를 사용하였고, 지금은 강화되고, 편한 유니코드를 사용하고 있지요. 하지만 Linux에 있었을 때는 잘 몰랐었는데, Windows에서 와보면 ..

Win32 API의 자료형

이제부터 우리는 Windows API를 Win32 API라고 정의하겠습니다. 그 이유는 우리가 만드는 프로그램은 x86인 32비트 기반의 컴파일러를 이용해서 프로그램을 빌드하고 있기 때문입니다. Win32와 Win64에 대한 설명은 차후에 별도의 포스팅을 통해 보도록 하겠습니다. #include 우리는 Windows API를 사용할 때 위 헤더 파일을 사용하는 것으로 알고 있죠, 이 헤더 파일을 이용해서 간단한 메시지 창을 만들어보기도 했었습니다. 하지만 MessageBox의 인자 값에서는 여러가지 자료형들이 나왔는데요. MessageBoxA(_In_opt_ HWND hWnd, _In_opt_ LPCSTR lpText, _In_opt_ LPCSTR lpCaption, _In_ UINT uType); 자 ..

2016. 6. 12. 20:45

Windows API 와의 만남

오늘은 카테고리를 추가하여, Windows API에 대한 포스팅을 하고자합니다. 여태까지 저는 Linux와 친숙해오면서, Windows를 잘 사용하지 않고 있는 편입니다. 하지만, 학교 과제나 일반적인 업무 등을 보다보면, Windows는 피할 수 없는 존재이기 때문에 자주 사용합니다. 그렇다보니 Windows Kernel 쪽에도 관심을 갖게 되었습니다. Windows API는 제가 C 언어를 배웠을 때만해도 아직 한창 몰랐던 시스템이였습니다. 이 Windows API를 알게 된 것은 GDB를 사용하던 Linux의 디버거가 Windows에서는 OllyDbg나 Immunity Debugger를 사용하면서부터 Unix나 Linux와 달리 Windows 에는 특별한 API 모듈이 있다는 것을 알았습니다. 사실..