비동기 소켓 - WSAAsyncSelect 안녕하세요? 이번 장에서는 '비동기소켓'에 대해 알아볼까요?. 비동기 소켓이란 말이 생소하실 텐데 쉽게 말해서 메시지방식의(이벤트) 소켓을 뜻하는 말입니다. Win32에선 DOS나 UNIX와는 달리 이벤트성 메시지를 통해 프로그램이 제어되죠? 마찬가지예요. 일반 소켓함수는 대부분 UNIX와 같은 순차적으로 실행이 되지만 비동기소켓은 윈도우와 같이 메시지방식으로 진행된다고 생각하시면 됩니다. 우리 저번에 블록함수에 대해서 잠깐 알아봤죠? 다시한번 개념을 정리해 드리자면.. '블록함수란 특정이벤트가 발생하기 전까지 리턴하지 않는 함수' 라고 정의할 수 있겠네요. 아래는 블록함수의 주요 목록들 입니다. accept, connect, send, recv 이외에도 몇가지 더 있지만 그건 레퍼런스를 참고하시고 저 .. 더보기 데이터 전/수송 함수인 send/recv 우린 이 전장까지 소켓을 생성하고 바인딩하여 클라이언트의 연결요청을 수락하는 방법까지 배웠습니다. 이제 실질적으로 중요한 데이터 전송, 수신 함수인 send 함수와 recv 함수를 배울겁니다. send 함수는 데이터를 해당 소켓으로 보내는 함수이고 recv 함수는 해당 소켓으로부터 데이터를 받는 함수입니다. 이 단원 마지막에는 간단한 에코서버와 아직 배우진 않았지만 클라이언트가 연결을 요청하는 프로그램의 소스를 코딩해 볼겁니다. 중요한 부분이니 눈 크게 뜨고 따라오세요. 우선 두 함수의 원형부터 살펴볼까요? int send( SOCKET s, const char* buf, int len, int flags ); int recv( SOCKET s, char* buf, int len, int flags );.. 더보기 클라이언트의 연결을 처리하는 accept 함수 드디어 중요한 accept 함수를 다루게 되었습니다. 이 함수는 TCP연결방식에서 서버측에서만 쓰이는 함수입니다. 클라이언트에서는 사용하지 않는 함수죠. 이 함수가 호출되면 클라이언트의 연결요청을 기다렸다가 요청을해오면 수락해서 서버-클라이언트간의 연결 고리를 만드는 함수입니다. 전에 TCP를 전화기에 비유했는데 이 함수를 전화기에 비유해보자면 '전화가 걸려오면 전화를 받는 기능' 을 한다고 말할 수 있습니다. 물론 여기에서는 클라이언트가 연결요청을 하기전에 accept 함수를 호출한 상태여야 하겠지만 말예요. 함수 원형을 살펴볼까요? SOCKET accept( SOCKET s, struct sockaddr* addr, int* addrlen ); 우선 리턴타입이 SOCKET형입니다. 이 함수는 연결요청.. 더보기 이전 1 ··· 16 17 18 19 20 21 22 ··· 31 다음