현재강좌 : UNIX 소켓 응용 프로그래밍 다음: 4.2 채팅 서버 프로그램


4.1 소켓의 동작모드

▶ 소켓의 동작모드에는 blocking, non-blocking 그리고 비동기(asynchronous) 모드 세 가지가 있으며 소켓을 처음 생성하면 blocking 모드의 소켓이 생성된다.

▶ blocking 모드의 소켓이란 이 소켓에 어떤 소켓 관련 시스템 콜을 호출하였을 때 네트웍 시스템(즉, TCP/IP)이 동작을 완료할 때까지 응용 프로세스가 멈추어 있게(block) 되는 소켓을 말한다.

▶ 응용 프로그램에서는 필요에 따라 이 blocking 모드의 소켓을 non-blocking 모드 또는 비동기 모드로 변경하여 사용하여야 한다.

▶ Non-blocking 모드의 소켓이란, 소켓 관련 시스템 콜에 대하여 네트웍 시스템이 일단 결과를 바로 리턴하여 응용 프로그램이 block되지 않게 하는 소켓을 말한다.

▶ 소켓관련 시스템 콜 중에 block될 수 있는 것은 listen(), connect(), accept(), send(), recv(), close() 등이다.

▶ 한편 비동기 모드는 non-blocking 모드에서처럼 block될 수 있었던 소켓 시스템 콜에 대해서 일단 리턴을 하고 시스템 콜의 해당 동작이 완료되면 비동기적으로(asynchronously) 그 결과를 응용 프로그램에게 알려주는 소켓의 동작 모드이다.

▶ 4.2절과 4.3절에서 각각 소개할 채팅 서버와 클라이언트 프로그램에서는 여러 가지 I/O 작업을 병행하여 처리하는 것이 필요하다.

▶ 이때 select() 시스템 콜을 사용하여 소켓을 비동기 모드로 사용하는 것에 대하여 자세히 설명한다.

▶ 한편 소켓의 동작모드 변경은 윈도우 소켓(윈속) 프로그래밍에서도 자세히 다룬다(5.1.1절과 5.2.2절 참조).


현재강좌 : UNIX 소켓 응용 프로그래밍 다음: 4.2 채팅서버 프로그램