더북(TheBook)

fd_set을 초기화하려면 스택에 변수 하나를 선언하고 FD_ZERO 매크로를 써서 초기화한다.

fd_set myReadSet;
FD_ZERO(&myReadSet);

집합에 소켓을 추가하려면 FD_SET 매크로를 사용한다.

FD_SET(mySocket, &myReadSet);

리턴 후 집합에 특정 소켓이 포함되었는지 확인하려면 FD_ISSET 매크로를 쓴다.

FD_ISSET(mySocket, &myReadSet);

select()는 소켓 하나에 적용되는 기능이 아니므로 앞서 구현한 소켓 래퍼 클래스의 함수로 추가하기엔 좀 어울리지 않는다. 그보다는 SocketUtils 클래스에 함수를 코드 3-10과 같이 추가하여 여러 TCPSocket 객체와 같이 사용할 수 있게 Select()를 구현했다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.