분류 전체보기330 13. Overlapped 방식 Overlapped 방식- Overlapped 방식은 이벤트 기반, 콜백 기반 두 종류로 나눌 수 있다. - Overlapped는 비동기 + 논 블로킹 방식으로 이전의 Select 방식보다 성능적으로 뛰어나다고 알려져 있다. - 비동기는 비동기 함수를 실행한 후 대기하는게 아니라 시간이 지난 후 통지를 받는 개념으로, 반환값을 통해 데이터가 왔는지 여부를 확인한 후 오지 않았을 때 각 방식의 로직을 수행한다. - 이벤트 기반은 WSAEVENT를 통해 이벤트를 등록하고 이벤트의 상태를 체크해서 recv를 처리하는 방식 이벤트 기반/* Server.cpp */ #include "pch.h" #include "ThreadManager.h" // WSAEventSelect = WSAEventSelect가 메인 .. 2023. 12. 11. 12. Select 방식 Select 방식이란- Select 방식이란 논 블로킹 방식 중 하나로 논 블로킹 방식의 단점인 스핀락처럼 무한히 시도하는 문제와, 이중으로 에러를 체크해줘야 하는 문제를 해결하기 위한 방법 중 하나이다. - accept, recv와 같은 함수들을 호출하기 전에 해당 이벤트가 일어났는지를 체크하고 일어났으면 처리하는 식으로 로직이 구성되어 있다. 1. 읽기/쓰기/예외 중 몇 개를 관찰 대상으로 등록한다. 2. select 함수 호출 -> 관찰 시작 3. 적어도 하나의 소켓이 준비가 되면 리턴 -> 낙오자 제거 4. 남은 소켓 제거한 후 진행/* Server.cpp */ #include "pch.h" #include "ThreadManager.h" const int32 BUF_SIZE = 1000; str.. 2023. 12. 11. 11. 논 블로킹 소켓 setsockopt 란? - 소켓의 세부 옵션을 세팅하는 함수 - 소켓의 핸들, level, 옵션명, 옵션값을 인자로 받아서 해당 소켓의 상세 옵션을 세팅한다. 알아둬야 할 옵션명 - SO_KEEPALIVE : 주기적으로 해당 소켓이 살아있는지 확인하는 옵션 - SO_REUSEADDR : 서버를 내렸다가 다시 켰을 때 해당 포트가 사용중이라고 뜰 경우가 있는데, 기존에 사용하던 포트라도 사용하겠다는 옵션 - TCP_NODELAY : Nagle 알고리즘을 사용할 것인지를 설정하는 옵션 Nagle 알고리즘이란? - 데이터가 충분히 크면 보내고, 그렇지 않으면 데이터가 쌓일 때까지 대기 - 장점은 소소한 작은 패킷들이 자주 전송되면 낭비이기 때문 (데이터의 크기가 작더라도 이 패킷이 전달되기 위해 필요한 자원.. 2023. 12. 11. 10. TCP vs UDP 기본 개념 단말기 = 고객 스위치 = 아파트 경비실 라우터 = 택배 배송 센터 상황 : 고객 a가 고객 b에게 택배(데이터)를 보내고 싶다. 고객 a는 현대 아파트에 살고, 고객 b는 자이 아파트에 산다. a가 b에게 택배를 보내기 위해서 거쳐야 하는 단계는? 1. 아파트 경비실에서는 해당 아파트에 거주하는 고객들의 정보에 대해 알고 있다. 2. 따라서 고객 a는 현대 아파트 경비실에 택배를 전달하고 경비실은 택배 배송 센터에 택배를 전달한다. 3. 택배 배송 센터는 택배를 고객 b가 거주하는 자이 아파트 경비실에 전달한다. 4. 자이 아파트 경비실은 최종적으로 고객 b에게 택배를 전달한다. - 생략된 부분은 택배 배송 센터에서 a아파트와 b아파트를 배송하는 이동 구간이 '인터넷'이라는 점이다. TCP .. 2023. 12. 11. 이전 1 ··· 14 15 16 17 18 19 20 ··· 83 다음