네트워크프로그래밍8 소켓 프로그래밍 이론 정리 소켓프로그래밍이 tcp udp부터 시작해서 select wsaEvent, overlapped, .. 까지해서 IOCP가 나오기까지를 확인해보자. 각 모델 별로 장단점을 정리하면서 IOCP의 특정도 적어 놓겠습니다. ------------------- select 모델 (안드로이드에서 하면 문제가 없다, 안드로이드는 linux플랫폼기반이니) -장점 : 윈도우 리눅스 공통 -단점 : 성능이 안좋다 왜냐? 소켓set에 계속해서 등록을 해줘야하기에, 갯수 제한 64개 ----------------------------wsaEventSelect 모델------------------------------------------- - 비교적 뛰어난 성능이지만 64개 갯수제한이 동일하게 있다 ---------------.. 2022. 4. 12. overlapped모델(callback방식) overlapped모델(callback 방식) 콜백방식이랑 이벤트방식은 비동기방식이다. 완료시점을 뒤로 미루는 느낌. 콜백이랑 이벤트 방식의 차이는 완료되었다는 것을 callback함수로 받거나, 이벤트를 통해 받거나의 차이이다. 구현에도 큰 차이가 없다 이벤트 방식은 세션이랑 이벤트를 1대 1대응을 시켰고,WSARecv마지막에 CALLBACK을 사용하지 않았던 것이다. 콜백 방식은 이벤트랑 세션을 1대1 대응할 필요가 없다, 또한 Alertable Wait를 사용해서 받을 callback이 있는지 생길때까지 대기를 타다가 SleepEx하는 순간에 내부적으로 예약 되어있는 callback을 다 호출하는 방식이다. 여기서 특징은 클라갯수만큼 이벤트가 필요하지 않다는점이다. alertable wait apc.. 2022. 4. 12. Overlapped모델(이벤트기반) Overlapped모델(이벤트기반) Overlapped IO는 비동기 + 논블로킹이다. 단계를 살펴보자 Overlapped 함수를 건다(WSARecv, WSASend) Overlapped 함수가 성공했는지 확인 후 성공했으면 처리를 하고 실패를 했으면 pending인지 아니면 진짜 실패인지 체크 성공했을 때 이벤트 방식으로 하거나 call back방식으로 처리 할 수 있다 이번에는 이벤트 방식.. Overlapped모델 상세 옵션을 살펴보겠습니다 cf : Scatter - Gather라는 것이 있는데 이것은 흩어져있는 패킷들을 모아서 전송할 수 있어서 성능적으로 우수하다. WSASend, WSARecv의 인자들을 보겠습니다. 1) 비동기 입출력 소켓 2) wsaBUF 배열의 시작 주소 + 개수 3) 보내.. 2022. 4. 11. WSAEventSelect 모델 WSAEventSelect 모델 이번 모델과 select모델의 차이점을 먼저 짚자 select모델은 동기방식이지만, WSAEventSelect는 비동기 방식으로 완료됨을 이벤트 객체를 통해서 전달받는다 그리고 select는 매번 전체 reset을 해주어야했지만 이번은 그렇지않다. 그렇지만 WSAEventSelect도 동일하게 최대 갯수 제한이 있다. 소켓과 관련된 네트워크 이벤트를 [이벤트 객체]를 통해 감지 받는다 (비동기 방식) 이벤트 객체 관련 함수들 생성 : WSACreateEvent 삭제 : WSACloseEvent 신호 상태 감지 : WSAWaitForMultipleEvents 구체적인 네트워크 알아내기 : WSAEnumNetworkEvents 신호 상태 감지는 기다리다가 어떤 이벤트가 완료되.. 2022. 4. 11. 이전 1 2 다음