C_C++ 프로그래밍
-
[QT] QT 5.10 리눅스에서 설치하기!C_C++ 프로그래밍/QT 2019. 6. 7. 22:13
로재의 개발 일기 QT 리눅스 다운 QT를 다운하기 위해서 사이트로 직접 들어갑니다.(저는 5.10을 다운 받았습니다) http://download.qt.io/archive/qt/ 미리 빌드 된 파일을 설치를 하면 빠르지만개개인의 필요에 따라서 설치하도록 합니다. 설치 과정 C/C++ 관련 컴파일러 헤더 파일 등이 포함되어 있는build-essential을 설치합니다. (makefile도 포함) 1sudo apt-get install build-essentialcs 이후 다운로드 된 폴더로 들어가서1sudo chmod +x qt-opensource-linux-x64-5.10.0.runcs chmod로 권한을 변경 시킵니다. 1./qt-opensource-linux-x64-5.10.0.runcs실행을 시킵..
-
Blocking, Unblocking 봉쇄/비봉쇄 통신C_C++ 프로그래밍/TCP_IP 2019. 6. 6. 22:09
로재의 개발 일기 Blocking I/O를 직접 user level에서 작업이 불가능하다.이를 커널 장치에서 설정을 할 수 있으며일반적인 프로그래밍에서 별도의 작업이 없다면 봉쇄 통신을 사용하여 통신을 한다. 일반적으로 생각하는 server의 역할에서 client의 수신을 기다리는 동안 다른 작업을 하지 못하는 행위를 예시로 들 수 있다.생각해보면 자원 낭비가 일어나는 것이다. Unblocking 비봉쇄 통신을 사용하여 통신을 한다.read()를 예시로 들면, 프로세스가 입력을 기다리는 동안 다른 작업을 할 수 있도록 처리를 한다.이때 입력이 없는 상태에서 특별한 오류가 없다면 정상적인 return 처리를 해주고특정 오류가 발생 시, err 처리를 해준다. 이를 소켓에 적용하기 위해서 fcntl() 함수..
-
fseek와 lseek 사용 정리 +ftellC_C++ 프로그래밍 2019. 6. 6. 20:10
로재의 개발 일기 fseek와 lseek 두 함수 모두 파일 포인터에 관련된 함수이다.이 참에 매번 찾기 귀찮아서 정리를 해본다. fseek? 1int fseek(FILE * stream, long offset, int whence)cs FILE의 포인터를 첫 번째 arg로 넣어준다.1pFile = fopen("Text.txt", "w+");cs 다음과 같이하면 손 쉽게 사용이 가능하다. offset : 현재 위치에서 이동할 크기 whence : 정의된 값이나 상수로 사용이 가능하다.SEEK_SET : 파일 시작 SEEK_CUR : 현재 파일 포인터 위치 SEEK_END : 파일의 끝 123456789101112131415161718192021222324252627282930313233343536#inc..
-
멀티쓰레드를 이용한 소켓 통신C_C++ 프로그래밍/TCP_IP 2019. 6. 4. 21:30
개발 환경 OS Ubuntu 18.04.2 컴파일러 gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04) 서버 측에 pthread를 사용하여 1개가 아닌 여러 클라이언트의 접속이 가능하도록 하였고 현재 방문자의 수가 몇 명인지 체크하도록 하였다. 이때 방문자 수는 서로 다른 Thread가 공동으로 접근 할 수 있기 때문에 Mutex를 사용하여 관리 하도록 하였다. thread를 통해서 client의 정보를 전달하기 위해서는 서버와 accept를 통해서 나온 client의 접근 지정자를 void 형식으로 캐스팅하여 인자로 보내주면 된다. 앞으로 추가 사항 이후에 클라이언트가 채팅한 내용을 서버에서 각각의 클라이언트들에게 뿌려주는 기능과 파일 전송을 추가할 계획이다. 소스코드..
-
[TCP/IP] [OOB] OOB 통신에 대해서 알아보자C_C++ 프로그래밍/TCP_IP 2019. 6. 4. 20:29
개발 환경 OS Ubuntu 18.04.2 컴파일러 gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04) OOB란출처 : 정보통신기술용어해설 대역외 발사 (Out-of-band Emission, OOB) ㅇ 변조의 결과로써 생기는 필요주파수대역 바로 바깥쪽에 있는 1 이상의 불요발사 - 이에는 스퓨리어스 발사를 포함하지 않음 . 즉, 기본파 주위에 인접하여 발생하는 것OOB = Out of Band라는 의미로 대역 외의 발사를 의미합니다.우리가 보내는 데이터들은 대부분 In of Band 방식으로 대역폭 내에 있기 때문에 우선순위가 특별히 존재하지 않습니다.하지만 우리가 긴급하게 데이터를 보내고자 할 때즉 우선 순위 통신을 하고자 할 때, OOB 통신을 사용합니다.또한, ..
-
sscanf와 sprintf에 대해서 알아보자C_C++ 프로그래밍 2019. 6. 4. 19:58
개발 환경 OS Ubuntu 18.04.2 컴파일러 gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04) sscanf int sscanf(const char *str, const char *format, ...) sscanf를 간단하게 예시를 들면 str = "Welcome my home"; sscanf(str, "%s%s", str1, str2); str에 저장된 문자열을 str1과 str2에 따로따로 입력을 한다는 의미이다. str1 = "Welcome" str2 = "my"를 가지게 된다. 이때 format을 정해주어 문자열인지 숫자인지 따로 따로 정할 수 있다. (알파벳 대문자 소문자 등등...) sprintfint sprintf(char* str, const ch..
-
시그널 함수의 종류C_C++ 프로그래밍/뇌를 자극하는 TCP_IP 2019. 6. 2. 19:32
1. SIGHUP터미널을 잃어버렸을 때 발생한다. 즉 프로그램을 실행시킨 상태에서 콘솔 창을 닫을 때 발생한다.(종료) 2. SIGABRT프로그램의 비정상 종료를 뜻한다. (abort) 3. SIGNINTctrl + c 키를 입력할 때 발생한다. => 프로세스가 종료된다. 4. SIGIO비동기적인 입출력이 발생했을 때 사용한다. 5. SIGKILL프로세스를 강제로 죽이기 위해서 사용한다.주로 시스템 관리 목적 6. SIGSEGV시그널을 사용자가 직접 발생 시키기도 하지만, 운영체제에서 발생 시킬 수도 있다.ex) segmetaion fault 7. SIGSTOP프로세스를 일시 중단할 때 사용한다.ctrl + z 8. SIGCONT멈춘 프로세스를 다시 살리는 신호이다. 시그널 함수시그널 함수를 사용하면, ..
-
뇌자극 TCP/IP 11강 요약C_C++ 프로그래밍/뇌를 자극하는 TCP_IP 2019. 6. 2. 19:22
IPC = Inter process Communications네트워크 프로그래밍이 아닌 시스템 프로그래밍에 가까운 부분이다. 소켓 함수는 20개 내외로 제한적이기 때문에, 응용 프로그램 개발을 할 시에는 시스템 프로그래밍 기술이 매우 중요하다.네트워크 프로그램도 시스템 위에서 작동한다. 프로세스간의 통신을 위해서 사용한다.안정적인 작동이 가능한다.최근에는 쓰레드 기반을 사용한다. (IPC가 너무 난해하기 때문에) System V IPC 계열과 POSIX IPC가 존재한다. PIPE단방향의 데이터 통신용으로 사용한다.=> 양방향을 사용하기 위해서는 2개를 생성 부모 프로세스와 자식 프로세스간의 통신을 위해서 사용한다. 이름이 없는 파이프와 이름이 있는 파이프로 나뉨 #includeint pipe(int f..