추상 자료형(ADT)는 무엇인가? 자료구조를 이해하기 위해서는 추상 자료형(ADT)에 대해 먼저 숙지하는 것이 중요하다. 그렇다면 알아보자 추상 자료형이란 무엇인가.우선 추상 자료형이라는 단어만 봤을때 느낌은 "추상화 된 자료형" 정도인데, "추상화" 라는 말이 조금 어렵다. 이에 대해서 정리해 보도록 하자. C++ 에서의 클래스를 생각하면 쉽다. 예를들어 우리가 일상에서 흔히 쓰는 티비를 클래스로 가진다고 생각해보자. 클래스의 이름은 Tv가 될 것이다.이때 사용하는 기능은 전원 켜기, 전원 끄기, 채널변경, 볼륨변경 이렇게 4가지 기능이 있다고 생각해 보면 이를 인터페이스 함수로 만들 수 있다. 12345678910class Tv{ private: //생략 public: PowerOn(); //파워 온..
프로젝트가 보통규모 이상만 되어도 한 프로세스(Process)당 스레드(Thread)의 수가 굉장히 많아진다. 하지만 한 프로세스 내에서 여러 스레드가 하나의 자원을 동시에 사용하려고 하면 어떤 문제가 발생할까. 예를들어 어떤 식당에 종업원이 한명 있다고 해보자. 이 종업원을 하나의 객체라고 생각했을때, 아마도 C++ 클래스로는 간단하게 이런 형태로 짤 수 있지 않을까 싶다. 1234567class 종업원{ private: bool isWork; public: void SetWork(bool work);} cs 종업원이라는 클래스는 일을 하고있는지 안하고있는지를 저장하는 bool값 isWork 변수를 가지며 isWork의 상태를 바꾸어 줄 수 있는 SetWork를 인터페이스 함수로 가지고 있다. 손님이 ..
리틀 엔디안과 빅 엔디안 (Little Endian, Big Endian) 이번 포스팅에서는 리틀 엔디안과 빅 엔디안에 대해서 소개하도록 하겠다. 컴퓨터에서 어떤 크기의 데이터를 메모리에 저장할때 바이트 단위로 나누어 저장하는데 이러한 방식을 바이트 오더(Byte Order) 라고 한다. 바이트 오더라고 하면 가장 먼저 떠오르는 것이 보통 오늘 이야기하고자 하는 리틀 엔디안(Little Endian)과 빅 엔디안(Big Endian)인데, 알고 있더라도 자주 헷갈리는 부분중에 하나이다. [그림] 레지스터와 메모리 위치 매핑관계, 출처 : 위키피디아(www.wikipedia.org) 우리가 패킷 분석을 하면서 많이 보게되는 네트워크 프로토콜은 기본적으로 빅 엔디안 표현이다. 리틀 엔디안 (Little-En..
이전 포스팅소켓 프로그래밍 : 소켓을 이용한 채팅 프로그램 만들기 예제(서버)http://andrew0409.tistory.com/103 클라이언트 역시 대화상자 형식으로 생성하도록 한다. 왼쪽 그림과 같이 만들면 되겠다. 주소, 포트, 채팅, 입력이 써있는 스태틱 텍스트와, 입력할 수 있도록 주소,포트,입력은 에티트 컨트롤, 채팅은 리스트박스를 만들어 두자. 그리고 연결, 끊기, 보내기 세개의 버튼을 만든다. 에디트 컨트롤과 리스트박스는 변수추가를 하도록 하자. 나는 순서대로 mIp, mPort, mHistory, mInput이라는 이름으로 변수를 추가했다. 마지막으로 세개의 버튼을 각각 더블클릭해서 처리기를 만들면 초반 설정은 끝난다. 아 언급하지 않았지만 app에서 WSAStartup이나 WSACl..
이번에는 채팅을 할 수 있는 프로그램을 예제로 공부하겠다. 1부 : 윈도우즈 MFC 소켓프로그래밍 : 소켓 기본 클래스 소스코드 1 (헤더파일)http://andrew0409.tistory.com/97 2부 : 윈도우즈 MFC 소켓프로그래밍 : 소켓 기본 클래스 소스코드 2 (서버cpp파일)http://andrew0409.tistory.com/99 3부 : 윈도우즈 MFC 소켓프로그래밍 : 소켓 기본 클래스 소스코드 3 (클라이언트cpp파일)http://andrew0409.tistory.com/100 기본적으로 MFC 프로젝트를 하나 생성하고, 지난 포스팅에서 만들어놓은 CClientSocket 과 CServerSocket의 헤더와 cpp파일을 프로젝트 폴더로 복사해와서 include 한다. 잘 모르겠다..
1부 : 윈도우즈 MFC 소켓프로그래밍 : 소켓 기본 클래스 소스코드 1 (헤더파일)http://andrew0409.tistory.com/97 2부 : 윈도우즈 MFC 소켓프로그래밍 : 소켓 기본 클래스 소스코드 2 (서버cpp파일)http://andrew0409.tistory.com/99 3부 : 윈도우즈 MFC 소켓프로그래밍 : 소켓 기본 클래스 소스코드 3 (클라이언트cpp파일)http://andrew0409.tistory.com/100 4부 : 윈도우즈 MFC 소켓프로그래밍 : 소켓 기본 클래스 소스코드 4 (메인cpp파일) 어제 서버쪽 메인 cpp 파일을 올려놓고 클라이언트쪽 코드를 안올렸구나 하는 생각이 문득 들었다.그래서 뒤늦게 올림...ㅋㅋ 서버쪽 코드를 이해하고 있다면 클라이언트를 짜는것..
1부 : 윈도우즈 MFC 소켓프로그래밍 : 소켓 기본 클래스 소스코드 1 (헤더파일)http://andrew0409.tistory.com/97 2부 : 윈도우즈 MFC 소켓프로그래밍 : 소켓 기본 클래스 소스코드 2 (서버cpp파일)http://andrew0409.tistory.com/99 3부 : 윈도우즈 MFC 소켓프로그래밍 : 소켓 기본 클래스 소스코드 3 (클라이언트cpp파일)http://andrew0409.tistory.com/100 소켓 기본 마지막 포스팅. 오늘은 지금까지 배운 CServerSocket과 CClientSocket을 이용해서 직접 서버에 연결하고 데이터를 전달해보는 예제 소스코드를 보고 연습해보겠다. 123456789101112void CChildView::OnKeyDown(U..
지난 포스팅에서는 서버클래스의 소스코드에 대해서 살펴보았다. 이번에는 클라이언트 클래스의 소스코드에 대하여 살펴보고 알아보는 시간을 가져보겠다. 123456789CClientSocket::CClientSocket(SOCKET sock) : mSock(sock){} CClientSocket::~CClientSocket(){ Close();}Colored by Color Scriptercs 생성자와 소멸자는 이전에 포스팅 했던 서버.cpp의 내용과 동일하니 코드만 올려놓고 설명은 생략하겠다.궁금한 사람은 이전 포스팅 http://andrew0409.tistory.com/99 를 참조하시면 되겠다. 1234567891011121314151617bool CClientSocket::Create(){ if (IsV..
지난 포스팅에서 MFC 소켓 프로그래밍을 하는데에 필요한 클래스 두개 서버와 클라이언트의 헤더파일에서 간단하게 각 멤버변수와 멤버함수의 사용법에 대해서 살펴보았다. 이번에는 본격적으로 cpp 파일의 소스를 하나하나 살펴 보겠다. 12345678CServerSocket::CServerSocket(SOCKET sock) : mSock(sock){} CServerSocket::~CServerSocket(){}Colored by Color Scriptercs 생성자와 소멸자이다. 소멸자는 기본적으로 주어지는 것을 그대로 사용하고 생성자는 default parameter를 사용하기 때문에 기본생성자를 따로 두지 않고 콜론 초기화를 사용하였다.만약 생성자를 별도로 호출하지 않으면 mSock은 default para..
소켓을 연결해서 통신을 하려면 기본적으로 서버와 클라이언트가 필요하다.또한 서버는 하나 뿐만이 아니라 여러 클라이언트에서의 연결을 계속적으로 받고, 처리하기 위해서 쓰레드를 사용해야한다. 아래에는 클래스로 만들어둔 서버와 클라이언트의 기본이되는 소스코드를 첨부하겠다. 편의를 위해서 모든 멤버변수는 public으로 처리하였다. 들어가기에 앞서 App 클래스의 InitInstance 함수 내에서 12 WSADATA data; ::WSAStartup(MAKEWORD(2, 2), &data);cs 위 코드를 사용하여 WSADATA를 반드시 스타트 업 시켜야 한다. 이 작업을 빼먹으면 소켓을 아무리 잘 짜놓더라도 프로그램이 동작하지 않는다. 더불어 할당을 했으면 반드시 해제를 해야하는데 ExitInstance 함..
- Total
- Today
- Yesterday
- 디렉터리
- 티그널
- 프로세스
- 악보
- 라즈베리파이
- 스레드
- 터미널
- C
- UML
- 액터
- 안드로이드
- Sort
- 자료구조
- 데이터베이스
- 리눅스
- 쓰레드
- 정렬
- C/C++
- MFC
- 소켓 프로그래밍
- 클래스
- 티라노 시그널
- 파이썬예제
- C++
- 파이썬
- 클라이언트
- 소켓
- 유즈케이스
- 파일
- socket
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |