전체 글 21

TCP/IP 패킷 수신(패킷 분리 및 합침)

안녕하세요 업글입니다! 기본적인 TCP/IP 통신에 대한 예제들은 구글링을 통해서 쉽게 찾을 수 있습니다. 그러나 기본적인 함수 사용에 대한 내용이므로 바로 프로젝트 또는 현업에 적용하는 것은 쉽지 않습니다. 해당 포스팅에서는 TCP/IP 통신에서 패킷 수신 시 고려사항과 해당 사항을 고려한 로직 및 C/C++ 기반의 코드에 대해서 설명드리겠습니다. TCP/IP 통신은 MSS 사이즈, 윈도우 사이즈, 네이글 알고리즘 등과 같은 특징들에 의해서 상대측 어플리케이션 레벨에서 송신한 패킷이 분리되거나 합쳐져서 송신되어 수신 시에 분리되거나 합쳐져서 수신되는 경우가 있습니다. 패킷 분리되는 경우 위의 그림은 패킷 분리에 대한 예시로 상대측 어플리케이션 레벨에서 한번에 abcdef를 송신하였는데 수신 함수를 통해..

프로그래밍 2021.12.15

[c/c++] 프로세스 우선순위 변경

안녕하세요 업글입니다! 윈도우 운영체제는 리얼타임 OS가 아니기때문에 윈도우 환경에서 실행되는 프로세스의 경우 실시간으로 동작되는 것은 어렵습니다. 실시간이 중요한 경우 OS를 윈도우를 사용하지 않고 상대적으로 백그라운드에서 동작되는 프로세스가 적은 리눅스를 사용하거나 VxWorks와 같은 RTOS 종류의 운영체제를 사용하게 됩니다. 여기서는 윈도우 환경에서 프로세스를 최대한 실시간으로 운영하기 위한 방법에서 단순한 방법 중 하나인 프로세스 우선순위를 변경하는 방법에 대해서 설명드리겠습니다. 반대의 경우로 우선순위를 낮게 변경하는 경우에도 적용할 수 있습니다. Visual Studio를 통해서 생성된 프로그램을 실행하였을 때 기본적인 우선순위는 보통입니다. 작업 관리자의 세부 정보에서 해당하는 프로그램의..

프로그래밍 2021.12.10

[c언어/c++] 분기문(switch) 제거

안녕하세요 업글입니다. 이번 포스팅에서는 분기문(switch)를 제거하는 방법에 대해서 설명해보도록 하겠습니다. 분기문에 대한 설명 분기문은 조건에 따라서 각각 다른 코드를 실행하도록 합니다. if문, switch문이 조건에 따라서 실행되는 코드가 달라지기 때문에 분기문이라고 생각하시면 됩니다. 이러한 분기문은 코드 작성 시 필수적으로 사용해야하는 문법입니다. 그러나 분기 조건이 많아질수록 코드를 이해하기 어려워지므로 가독성이 떨어지게 됩니다. 분기문 코드 #include #include #include #include int main() { int32_t data, result; result = 0; data = rand() % 4; switch (data) { case 0: result = data ..

프로그래밍 2021.01.21

[c언어] 스택(Stack)

안녕하세요 업글입니다! 이번 포스팅에서는 스택에 대해서 설명드리겠습니다. 스택에 대한 설명 스택은 입력된 데이터들을 저장하고 저장된 순서와 반대로 데이터를 출력하는 자료구조입니다. 큐의 가장 큰 특징은 먼저 들어온 데이터는 가장 마지막에 나가는 것입니다. 이것을 후입선출 또는 LIFO이라고 주로 표현합니다. 쉽게 예를 들어서 접시 쌓기를 생각하시면 될 것 같습니다. 가장 먼저 정리한 접시가 가장 아래에 쌓여있고 가장 최근에 정리한 접시가 가장 위에 쌓여있기 때문에 가장 최근 쌓은 접시를 가장 먼저 사용하게 되는 것과 같이 데이터가 관리되게 됩니다. 스택 또한 큐와 동일하게 배열과 링크드리스트를 사용하여 구현할 수 있습니다. 스택 사용 이유 스택은 dfs(depth first search)와 같은 알고리즘..

프로그래밍 2021.01.14

[c언어] 링크드리스트(Linked List)

안녕하세요 업글입니다! 이번 포스팅에서는 링크드리스트에 대해서 설명드리겠습니다. 링크드리스트에 대한 설명 각 노드끼리 연결되어 자료를 관리하는 자료구조입니다. 포인터를 통해서 노드에서 다른노드를 가르킴으로써 노드끼리 연결할 수 있습니다. 그러므로 각 노드에는 노드를 가르킬 수 있는 포인터를 포함하고 있습니다. 링크드리스트를 이해하기 위해서는 포인터, 힙, 동적 메모리 할당에 대한 이해가 필요합니다. 각각에 대해서 간단하게 설명하도록 하겠습니다. 1) 포인터 포인터란 메모리의 주소를 저장할 수 있는 변수입니다. 변수를 선언 시 해당 변수는 메모리의 어떠한 영역에 위치하게 됩니다. 이 때 어떤 영역에 위치하는 지 표현 하는 것이 주소입니다. 각 변수는 유일한 주소를 가지게 됩니다. 포인터가 주소를 저장하는 ..

프로그래밍 2021.01.13

[c언어] 큐(Queue)

안녕하세요 업글입니다! 이번 포스팅에서는 큐에 대해서 설명해보도록 하겠습니다. 자료구조 중 하나인 큐(Queue)는 많은 분들이 알고계시고 프로그래밍을 막 시작하신 분들도 한번쯤은 들어봤을만한 대표적인 자료구조 중 하나라고 생각합니다. 큐에 대한 설명 큐는 입력된 데이터들을 순서대로 저장하고 순서대로 출력하는 자료구조입니다. 큐의 가장 큰 특징은 먼저 들어온 데이터는 먼저 나가는 것입니다. 이것을 선입선출 또는 FIFO이라고 주로 표현합니다. 쉽게 예를 들어서 맛집에서 줄서기를 생각하시면 될 것 같습니다. 먼저 온 사람이 맛집에 먼저 들어가고 나중에 온 사람이 나중에 들어가는 것과 같이 데이터가 관리되게 됩니다. 큐 사용 이유 큐는 bfs(breath first search)와 같은 탐색 알고리즘 등에서..

프로그래밍 2021.01.01

c언어/c++ do while(0)

안녕하세요 업글입니다! 이번 포스팅에서는 do while(0)에 대해서 설명드리겠습니다. do while문에 대해서 모르시는 분은 아래의 포스팅을 먼저 읽어보시는 것을 추천드립니다. 2020/12/18 - [분류 전체보기] - c언어/c++ do while문 c언어/c++ do while문 안녕하세요 업글입니다. 이번 포스팅에서는 do while문에 대해서 설명드리겠습니다. do while문에 대한 설명 while문에 대해서 잘 모르시는 분은 지난번 포스팅한 while문에 대해서 먼저 읽어보시는 것 elevate-yourself.tistory.com do while(0)에 대한 설명 do while(0)는 조건이 무조건 거짓이기 때문에 해당하는 코드를 반복하지 않고 1회만 수행하게 됩니다. 이렇게 되면 ..

프로그래밍 2020.12.21

c언어/c++ do while문

안녕하세요 업글입니다. 이번 포스팅에서는 do while문에 대해서 설명드리겠습니다. do while문에 대한 설명 while문에 대해서 잘 모르시는 분은 지난번 포스팅한 while문에 대해서 먼저 읽어보시는 것을 추천드립니다. 2020/12/17 - [분류 전체보기] - c언어/c++ while문 c언어/c++ while문 안녕하세요 업글입니다. 이번 포스팅에서는 반복문중 하나인 while문에 대해서 설명 드리도록 하겠습니다. while문에 대한 설명 c언어 및 c++에서 반복문은 while문, do while문, for문이 있습니다. 이 반 elevate-yourself.tistory.com do while문은 while문과 거의 동일하나 하나의 차이가 있습니다. while전에 do가 있듯이 반복하기..

프로그래밍 2020.12.18

c언어/c++ while문

안녕하세요 업글입니다. 이번 포스팅에서는 반복문중 하나인 while문에 대해서 설명 드리도록 하겠습니다. while문에 대한 설명 c언어 및 c++에서 반복문은 while문, do while문, for문이 있습니다. 이 반복문들 중에서 while문에 대해서 설명드리겠습니다. while문은 조건이 참인 경우 해당하는 코드를 수행하고 조건이 거짓일 때까지 코드를 반복적으로 수행하게 됩니다. 위의 그림과 같이 while문은 ①에서 조건을 확인하고 참인 경우 ②의 코드를 실행하고 다시①으로 이동하는 것을 반복하고 거짓인 경우 ③으로 이동하여 while문을 탈출하게 됩니다. while문 예제 #include #include #include int main() { int32_t value = 0; while (va..

프로그래밍 2020.12.17

c언어/c++ if 조건문

안녕하세요 업글입니다. 이번 포스팅에서 if 조건문에 대해서 설명드리겠습니다. 개인적인 생각으로 if문은 c언어 및 c++뿐만아니라 모든 프로그래밍 언어에서 가장 중요한? 없어서는 안되는? 중요하고 필수적으로 쓰여야 하는 문법이라고 생각합니다. 학부 시절에 포인터와 같은 초보자가 알지 못하고 이해하기 힘든 문법이 많은 상황에서도 조건문과 반복문을 통해서 대부분의 기능을 구현 했었던 기억이 있습니다. if 조건문에 대한 설명 if 조건문은 괄호안의 조건이 참인 경우 if 조건문에 해당하는 코드를 실행하게 됩니다. if(조건){ // 조건이 참인 경우 { } 안의 코드 실행 } 여기서 조건이 참이냐 거짓이냐를 판단하는 기준은 if(0)인 경우 거짓이고 if(0외에 숫자)인 경우 참입니다. if(참){ // ..

프로그래밍 2020.12.17