반응형

accept 함수

 

 

listen 함수 호출 이후에 클라이언트의 연결 요청이 들어왔다면

 

들어온 순서대로 연결 요청을 수락해야 한다.

 

연결요청을 수락한다는 것은 클라이언트와 데이터를 송수신할 수 있는 상태가 된다는 것을 의미한다.

 

따라서 이 상황에서도 소켓이 필요하다.

 

이미 서버 소켓이 존재하지만 이 서버 소켓은 문지기이다.

 

클라이언트와의 데이터 송수신을 위해 서버 소켓을 사용하면 문지기가 없어지는 것이다.

 

그러므로 소켓을 하나 새로 생성해야 하지만

 

accept 함수를 호출하면 소켓이 자동으로 생성되고

 

이 소켓은 연결 요청을 한 클라이언트 소켓과 자동으로 연결된다.

 

-

 

 

-

 

accept 함수는 "연결 요청 대기 큐"에서 대기 중인클라이언트의 연결 요청을 수락하는 기능의 함수이다.

 

그렇기에, accept 함수는 호출 성공 시 내부적으로 데이터 입출력에 사용할 소켓을 생성하고

 

그 소켓의 파일 디스크립터를 반환한다.

 

중요한 것은 자동으로 소켓이 생성되고, 연결 요청을 한 클라이언트 소켓에 연결까지 이뤄진다는 점이다.

 

아래의 사진은 accept 함수 호출 시 일어나는 상황이다.

 

-

 

 

-

 

위 그림에서 대기 큐(Queue)에 존재하던 연결요청 하나를 꺼내서 

 

새로운 소켓 생성한 후 연결 요청을 완료한다.

 

이렇듯 서버에서 별도로 생성한 소켓과 클라이언트 소켓이 직접 연결된다.

 

-

 

다음 포스팅에서 TCP 서버의 코드와 동작에 대해 알아보자.

 

반응형

+ Recent posts