c++ tcp server 2

[C++] C++ select api와 inet_ntop api 정리

c++ socket programming 을 하던 중 select api 가 어떻게 동작하는지 알지 못해서 코드를 읽는 도중에 흐름이 끊겼다. 알아보고 지나가자. 또한 inet_ntop api 에 대해서도 간략하게 알아보자. select api 를 설명하기 전에 멀티플렉싱 서버에 대해 설명해야한다. 멀티플렉싱 서버란 하나의 프로세스로 여러 클라이어트에 서비스를 하는 서버이다. 멀티플렉싱 서버에서는 하나의 프로세스가 서버 소켓 + 여러 클라이언트 소켓을 관리한다. 관리할때 fd_set 이라는 구조체를 사용한다고 보면 된다. 이 fd_set 은 배열 형태인데 인텍스로 매핑하기 위해 쓴다고 보면 된다. 그냥 bit array 에 특정 index 에 체크해준다고 생각하면 된다. 아래와 같은 함수가 있다. FD_..

C & C++/C++ 2022.11.10

[C++] C++ listen api 의 parameter 중 backlog.

C++ 을 사용해서 소켓 프로그래밍을 하던 중 listen api 에서 두번째 인자로 넘겨주는 backlog 라는 파라미터에 대해 정확하게 알고 있지 못했다. 우선 리눅스 메뉴얼에 들어가서 listen api 의 backlog 파라미터의 설명을 보면 다음과 같이 적혀있다. 즉 간단하게 보자면 큐 사이즈를 지정한다는 내용이다. 그런데 어떤 큐 사이즈를 지정하는것일까? 이제 아래 그림을 보자. 왼쪽이 서버에서 동시에 응답할 수 있는 최대 갯수라고 가정한다면 (현재로썬 3개) backlog 값이 5라고 했을때 아래와 같은 상황이 연출되는 것이다. 가운데 있는 listen backlog queue의 사이즈가 5로 잡혀있는 것이다. 그러니 10개의 요청이 들어왔을때 1, 2, 3 은 서버쪽에서 처리하고 있고 아직..

C & C++/C++ 2022.11.10
반응형