일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- compare
- Pointer
- file access
- Class
- java
- SERIAL
- flutter
- mfc
- Contour
- Encapusulation
- public
- inheritance
- length
- Read
- c++
- digitalRead
- Overloading
- wpf
- APP
- Unity
- atmega328
- parameter
- sensor
- UNO
- Android
- stream
- preprocessing
- Barcode
- aduino
- memory
- Today
- Total
목록C, C++, MFC/C, C++, MFC 테크닉 (31)
폴크(FOLC)

# CSocket 을 사용하면서 OnReceive(), OnClose() 함수가 정상적으로 호출이 발생하지 않는 상황 > 윈속 으로 직접 만들어서 데이터 송/수신 > 통신 event 가 발생한 경우에만 데이터 연동 # 윈속 사용하기 위해서 필요한 내용 > #include // MFC 소켓 확장 > AfxSocketInit(); # 소스 코드 내용 CString m_strServerIP = _T("127.0.0.1"); int m_nServerPort = 7000; // 윈속 초기화 WSADATA wsa; int ret = WSAStartup(MAKEWORD(2, 2), &wsa); if(ret != NO_ERROR) { //wprintf(_T("WSAStartup function failed with e..

# OOP(Object Oriented Programming) 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 > 컴퓨터 프로그램을 여러 개의 독립된 객체들의 모임으로 봄. > 각각의 객체는 서로 메시지를 주고 받고 데이터를 처리한다. # OOP 는 프로그램을 유연하고 변경이 쉽게 만든다. > 대규모 소프트웨어 개발에 많이 사용 > 프로그래밍을 더 배우기 쉽게 하고 개발 및 유지 보수가 간편 > 보다 직관적인 코드 분석을 가능 # 객체의 단위를 대표하는 것은 class, struct > class 와 struct 는 매우 흡사하며 운영 방법은 동일 > 한가지 차이점은 접근 지정자의 적용 방식 - class : private ( 지정자를 설정하지 않으면 기본적으로 반영됨 ) - struct : publ..

# 1982년도에 버클리 대학(University of California at Berkeley)에서 탄생 > BSD(Berkeley Software Distribution) UNIX 4.1에서 처음 소개 됨. > 1986년 BSD UNIX 4.3에서 개정 ( BSD소켓 또는 버클리 소켓이라고 부름 ) # Windows Sockets API의 캡슐화를 상속(CAsyncSocket) 받음. > 높은 추상화 수준을 CAsyncSocket 에서 제공 # 통신을 사용하기 위해서는 기본 함수를 추가 해야 한다. > 프로젝트 생성 시점에 Windows 소켓(W) 추가 > 또는 Application 에서 AfxSocketInit() 함수 추가 # 통신을 위해서 사용하는 기본 함수는 다음과 같다. > HOST : 총 ..

# TCP/IP 로 통신을 진행하는 상태 확인 > 1:1, 1:N, N:1 > 통신 연결을 사용하고 있는 PC 의 Listen socket 과 연결된 socket 에는 동일한 파라미터가 적용됨. - 각 socket 별로 별도의 파라미터 적용이 가능 # Socket 에서 보유하고 있는 기본 기능( KeepAlive 기능 )으로 설정된 시간 동안 데이터 송/수신이 없는 경우 socket 을 제거하고 연결 상태를 해제 시킨다. ( 리소스 삭제 ) > 기본 2시간 대기 > 비 정상 종료로 인해서 socket 을 사용하지 못하는 경우 ( 예외 처리 용 ) > LanCable 을 제거 했거나 통신 선로 상의 문제가 발생하는 경우 ( 예외 처리 용 ) # 소스 코드 ( CSocket 상속 받은 클래스 ) struct..

# 병렬 컴퓨팅(parallel computing) 또는 병렬 연산 > 크고 복잡한 문제를 작게 나눠 동시에 해결하는 데에 주로 사용되며, 비트/명령어/데이터/작업 병렬 처리 방식 > 오래전부터 주로 고성능 연산에 이용되었으며, 최근 컴퓨터 이용에서 멀티 코어 프로세서 구조로 주목 받음 # 병렬 처리 컴퓨터들은 대체적으로 하드웨어의 병렬화 방법에 따라 분류 > 클러스터, MPP, 그리드 - 여러 컴퓨터에서 한 가지 작업을 하도록 설계 > 멀티 코어나 멀티 프로세서 컴퓨터 - 여러 개의 CPU 를 한 기기에 탑재 # OPENMP ( Open Multi-Processing ) > 반복문의 구문을 각각의 스레드로 동작하게 할 수 있게 해주는 특수한 라이브러리 > Visual Studio 에서 기본 기능으로 지..

1. 포인터 # 메모리 주소를 가지고 있는 변수 # new 키워드 사용 # & 연산자와 new 키워드에 return 값을 갖음 ( 주소 값 ) # 동일한 자료형을 물리적인 메모리 공간에 연속으로 할당 받아서 이용한다. # 구조체/클래스를 이용해서 생성한 Object의 주소를 의미한다. > int iDataValue = 100; > int *pPointer_INT = &iDataValue; > float fDataValue = 1234.f; > float *pPoint_FLOAT = &fDataValue; > struct STRUCTTestSampleData > { > bool a; int b; float c; > } > > STRUCTTestSampleData *pPointer_STRUCT = new S..

1. 반복문 - STL 연동 # 특정한 부분의 코드가 반복적으로 수행한다. # vector, map 과의 연동 방식 ( STL 자체 iterater 존재 ) # for, while, do while 키워드와 조건식만 다르고 { } 함수 안에 내용은 동일하다. > vector vecData; > unsigned int iSumValue; > for(size_t i=0; i { > iSumValue += vecData[i]; > } > map mapData; > unsigned int iSumValue; > for(size_t i=0; i { > iSumValue += vecData[i].second; > } > vec..

1. 문자열 # 문자 자료형을 묶어서 관리 하고자 함. # CString 키워드를 사용한다. # MFC 라이브러리에서는 두 가지 방법으로 대량 문자 집합을 지원 # Unicode (유니코드) - wchar_t 와이드 문자 및 utf-16으로 인코딩된 문자열 # MBCS (멀티 바이트 문자 집합) - char 단일/더블 바이트 문자 및 로캘별 문자 집합으로 인코딩된 문자열 > Microsoft는 MFC 유니코드 라이브러리를 권장 하고 있다. > CString oldString = _T("This is a test"); > CString newString = oldString; > CString s1 = _T("This "); > s1 += _T("is a "); > CString s2 = _T("test"..

1. 조건문 # 명시한 불린 자료형 조건이 참인지 거짓인지에 따라 달라지는 계산이나 상황을 수행한다. # if, if ~ else, switch case 키워드를 사용한다. # 조건이 참인지 거짓인지를 비교할때 "==" 이렇게 사용한다. # if ~ else 문 에서는 else 구문을 빠뜨리지 않도록 한다. # switch case 문 에서는 default 구문을 빠뜨리지 않도록 한다. > if( a == 1 ) { printf(_L("a 는 1입니다."); } > if( a == 1 ) { printf(_L("a 는 1입니다."); } > else if( a == 2 ) { printf(_L("a 는 2입니다."); } > else { printf(_L("a 는 1 또는 2가 아닙니다."); } > s..

1. 프로그램 구조 # main() 가 반드시 포함되어 있어야 한다. # main() 을 진입하면서 프로그램이 시작하고 빠져나오면서 종료한다. 2. 변수 선언 및 종류 # 정수형, 실수형, 문자형으로 나뉜다. ㄱ. 정수형 # short - 부호 있는 2바이트 # int - 부호 있는 4바이트 정수(16비트 운영체제에선 int는 2바이트) # long - int와 같은 부호있는 4바이트 정수 # long long int - 부호 있는 8바이트 정수 ㄴ. 실수형 # float - 부호 있는 4바이트 (부동소수점 자료형) # double - 부호 있는 8바이트 (부동소수점 자료형 - float 의 2배) ㄷ. 문자형 # char - 부호 있는 1바이트 (문자를 담을수 있는 자료형) *** 부호없는 정수를 선언..
1. 프로그램 구조 # main() 가 반드시 포함되어 있어야 한다. # main() 을 진입하면서 프로그램이 시작하고 빠져나오면서 종료한다. 2. 변수 선언 및 종류 # 정수형, 실수형, 문자형으로 나뉜다. ㄱ. 정수형 # short - 부호 있는 2바이트 # int - 부호 있는 4바이트 정수(16비트 운영체제에선 int는 2바이트) # long - int와 같은 부호있는 4바이트 정수 # long long int - 부호 있는 8바이트 정수 ㄴ. 실수형 # float - 부호 있는 4바이트 (부동소수점 자료형) # double - 부호 있는 8바이트 (부동소수점 자료형 - float 의 2배) ㄷ. 문자형 # char - 부호 있는 1바이트 (문자를 담을수 있는 자료형) *** 부호없는 정수를 선언..