|
감사합니다. 잘 되네요. ㅋㅋ
-locke
박우성 님이 쓰신 글 :
: ioctlsocket함수를 사용하면 버퍼에 데이터가 쌓여 있는지 알 수 있습니다.
:
: unsigned long rsize;
: if( ioctlsocket( sock, FIONREAD, &rsize ) == SOCKET_ERROR ){
: //소켓 오류
: }else if( rsize > 0 ){
: //버퍼에 자료가 있음.
: }
:
: 참고로, 버퍼에 rsize만큼의 데이터가 들어 있을 수도 있고, 더 많이 들어 있을 수도 있습니다. ioctlsocket 호출 중이나 이후에도
: 네트워크에서 데이터가 더 들어와 있을 수 있기 때문에 ioctlsocket 값이 0일 때까지 계속 recv함수를 호출에서 버퍼를 비워주면
: 됩니다.
:
: do{
: ioctlsocket으로 버퍼 검사
: recv로 버퍼 비움.
: }while( rsize > 0 );
:
: locke 님이 쓰신 글 :
: : api로 소켓 프로그래밍을 처음 해보고 있습니다.
: : 현재 소켓에 수신버퍼에 받은 데이터가 있는지 검사해서 있을 때만 recv 함수를 호출해서 자료를 가져오는 방법 없을까요?
: : recv는.. 데이터가 들어올때까지 무조건 블록킹이라.. 다른 일을 못하고..
: : select로 하자니.. 이건 데이터가 들어왔을때만 이벤트가 발생을 해서..
: : 이거 말고.. 제가 임의적으로 버퍼 상태를 체크해서 값이 있을 경우만 recv를 하고싶습니다.
: : 가능할까요?
: :
: : -locke
: :
|