Guru

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ Guru ] in KIDS
글 쓴 이(By): guest (jin) <host.mic.go.kr> 
날 짜 (Date): 1998년 8월 12일 수요일 오후 05시 23분 57초
제 목(Title): Re: [Q]소켓에서 select()와 accept()의 차�


원론적으로 프로그램의 컨텍스트에 관련된 문제입니다.

만약 accept를 받아들이는 서버가 client의 connect()를 기다림과 동시에 다른 
입출력을 하고자 한다면.
그러니까 입력의 발생지가 2곳 이상 이라면

------------------------> accept
------------------------> other    

이렇게 되면 서버는 어느 한곳에서 데이터가 발생하기를 무한정 기다릴 수가 없게 
되죠 ( other에서 들어 오는 데이터도 읽어야 하니까 )

그렇다구 모든 file descriptor를 nonblock으로 설정하고 loop를 돌릴 수도 없고
--- 이렇게 해두 되긴 하지만 프로그램이 시스템 자원을 무지 많이 잡아 먹겠죠 --

그래서 select를 쓰는 겁니다.

select에서는 읽고자하는 file descriptor들을 한꺼번에 모니터링 해줍니다.
그러니까 데이터가 발생하면 즉시 return 하게 되는 거죠.
select()가 return 하면 어떤 file descriptor에서 데이터가 발생했는지를 검사 해
봐야 겠죠... 그런다음 실제로 그데이터를 읽어 오게 되는 겁니다.
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.