no image
C++ - TcpSocket 통신 Server 구현
서론https://dongyeop00.tistory.com/132 C++ - 소켓 프로그래밍 함수소켓 프로그래밍 함수socket 함수소켓을 생성하는 함수이며, 위와 같은 매개변수를 가지고 초기화를 한다.소켓 생성을 실패하면 -1을 반환socket(int domain, int type, int protocol);socket(네트워크 주소 체dongyeop00.tistory.com C++에서 지원하는 소켓 함수와 server와 client간의 통신을 알아보았으니 데이터를 주고 받는 프로그램을 만들어 보자. 먼저 서버부터 구현해보자WSADATAWSADATA는 Windows Sockets API(WinSock)에서 사용하는 데이터 구조체로, Windows 소켓 프로그래밍을 시작하기 전에 Winsock 라이브러리..
2024.08.30
C++ - 소켓 프로그래밍 함수
소켓 프로그래밍 함수socket 함수소켓을 생성하는 함수이며, 위와 같은 매개변수를 가지고 초기화를 한다.소켓 생성을 실패하면 -1을 반환socket(int domain, int type, int protocol);socket(네트워크 주소 체계, 소켓 타입, 프로토콜);네트워크 주소 체계(int domain) : IPv4(AF_INET), IPv6(AF_INET6)소켓 타입(int type) : TCP(SOCK,STREAM), UDP(SOCK_DGRAM)프로토콜(int protocol) : TCP(IPPROPTO_TCP), UDP(IPPROTO_UDP), 대부분 0으로 설정하여 기본값 사용ex)SOCKET mySocket = socket(AF_INET, SOCK_STREAM, 0);//socket(네트..
2024.08.14
no image
C++ - TCP 소켓 통신을 사용해보자
네트워크 프로그래밍이란?네트워크를 대상으로 입출력하는 프로그래밍을 의미한다.서로 다른 두 대 이상의 컴퓨터가 네트워크를 통해 데이터를 주고 받는 입출력 프로세스를 구현한 것이다. Socket이란?네트워크를 통해 데이터를 주고 받는 방법을 통신 규약에 맞게 함수로 구현해 놓은 것이다.이 함수들은 소켓의 생성, 연결, 데이터의 송수신 등의 작업 등을 구현 해놓은 API이다. 물론 Socket으로 네트워크 통신 기능을 구현하기 위해서는, 소켓의 생성, 만들어진 소켓을 통해 데이터를 주고 받는 절차에 대한 이해, 운영체제 및 프로그래밍 언어에 종속적으로 제공되는 소켓 API 사용법을 숙지해야 하지만, 개발자는 소켓의 구현만 고려하면 되는 프로그래밍 이점을 가진다. Socket Network Program 실행 ..
2024.08.14
C++ - Map
Map이란?key와 value로 구성된 pair 객체를 원소로 하는 컨테이너key는 중복 안됨value는 중복이 가능하다.특정 기준에 따라 원소들을 자동으로 정렬한다.위치가 계속 변경되므로 우너소에 직접 접근이 불가능하다.Map의 사용Map STL을 사용하기 위해서는 #include 헤더파일을 포함해야한다.#include  선언 방법map [name]#include #include using namespace std;int main() { //문자형 key, 정수형 value를 원소로하는 map1 생성 map map1; //정수형 key를 내림차순으로 저장하는 map2 생성 map> map2; //초기화 값이 있는 map3 생성 map map3 = { {"apple", "사과"}, {"banana"..
2024.08.01
C++ - STL 컨테이너
STL 컨테이너STL 컨테이너는 데이터를 보관하고 관리하기 위해서 필요한 여러가지 기능을 제공한다. Vector동적 배열로 배열의 크기를 변경할 수 있다.임의 접근이 가능하며, 뒤에서의 삽입이 빠르다.삽입, 삭제, 탐색 O(n), 임의 원소 접근 O(1) 보장한다.list연결리스트이므로 데이터를 순차적으로 접근하고 관리할 때 유용하다.위치에 상관없이 삽입과 삭제가 빠르다.삽입, 삭제 O(1), 탐색, 임의 원소 접근 O(n) 보장한다.deque임의 접근이 가능하며, 앞과 뒤에서의 삽입이 빠르다.삽입, 삭제, 탐색 O(1), 임의 원소 접근 O(n) 보장한다.map특정 키(key)로 데이터를 접근하고 관리할 수 있다.키로 값에 접근하며 삽입과 삭제가 빠르다.삽입, 삭제, 탐색 모두 O(log n) 보장se..
2024.07.31
C++ - Stack
Stack이란?스택은 대표적인 LIFO 구조이다. 따라서 제일 마지막에 넣은 데이터가 처음으로 빠져나오는 것을 볼 수 있다.Stack의 사용stack STL을 사용하기 위해서는 #include 헤더파일을 포함해야한다.#include 선언 방법은 stack [변수 이름]이다.ex) vector myStack;스택 멤버 함수stack.push(element)스택에 데이터를 추가stack.pop()스택에 데이터를 삭제stack.top()스택의 제일 위 데이터 반환스택이 비어 있다면 정의되지 않은 동작(Undefined Behavior) 예외 처리 발생 stack.size()스택의 사이즈 반환stack.empty()스택이 비어있는지 확인비어 있으면 1을 반환, 비어 있지 않으면 0을 반환합니다.stack.sw..
2024.07.29
C++ - Vector
Vector Container란?vector 컨테이너는 자동으로 메모리가 할당되는 배열이다.template를 사용하기 때문에 데이터 타입은 마음대로 넣을 수 있다.vector를 생성하면 heap(힙) 메모리에 생성되며 동적 할당된다.일반 배열과는 다르게 동적할당(힙)을 사용하므로 주로 입력값이 몇개인지 알지 못할 때 주로 사용된다.속도적인 측면에서 array(배열)에 비해 성능은 떨어지지만 메모리를 효율적으로 관리하고 예외처리가 쉽다는 장점이 있다.Vector의 사용의 헤더파일을 추가해야한다.선언 방법은 vector [변수이름]이다.ex) vector v;Vector의 생성자와 연산자vector v비어있는 벡터를 생성vector v(5)기본값(0)으로 초기화된 5개의 원소를 가지는 vector v를 생성..
2024.07.29
C++ - 우분투에서 Boost Library 설치하기
1. 다운 받기https://www.boost.org/users/download/ Boost DownloadsCurrent Release Version 1.85.0 April 15th, 2024 17:38 GMT New Libraries: Charconv, Scope. Updated Libraries: Asio, Atomic, Beast, Bimap, Bind, Conversion, Core, Filesystem, Function, Geometry, Iterator, JSON, LEAF, LexicalCast, Locale, Math, MSM, Multi-indwww.boost.org(여기에서는 tar.gz을 기준으로 설명합니다.) 2. 압출 풀기1. cd Downloads2. tar xvfz boost..
2024.07.19