본문 바로가기

Progamming/C/C++

ioctl 과 FIONREAD

ioctl 함수는 필수적인 하드웨어 특정 제어(일반적인 입출려과는 반대이다) 를 제공할 수 있다. 그러므로 이 시스템 호출은 장치마다 다르다. 예를 들어 ioctl을 사용하여 테이프 드라이브를 감거나 직렬 포트의 흐름 제어 특성을 설정할 수 있다. 이러한 이유로 ioctl은 플랫폼 별로 이식도리 수 있어야 할 필요가 없다.


ioctl은 소켓 통신에서  상대로 부터 날아온 데이터가 소켓 버퍼에 아직 있는지를 검사 할때도 사용이 가능하다.


예를 들어 Client A 에서 패킷 A,B,C,D,E,F 를 순차적으로 전송을 한다.

서버에 B 에서 A,B 까지만 읽고 소켓 통신을 끊거나 프로그램을 종료 하려고 할때 버퍼에 남아있는 패킷양을

확인 할 수 있다.

또는 패킷을 읽어 들이는 while 문 안에서

ioctl 함수를 이용하여 더이상 수신 패킷이 없으면 while 문을 빠져나가고, accept 상태로

돌아가 다음 소켓을 기다리게 할 수 있다.







예제 코드

'Progamming > C/C++' 카테고리의 다른 글

C Server와 Java Client 통신 예제  (1) 2011.07.11
유용한 popen 함수 / system 함수 대용  (0) 2011.07.07