WSAEventSelect 모델

2142 단어
WSAEventSelect 모델로 프로그램이 한 개 이상의 플러그인에서 시간 기반 네트워크 알림을 받거나 FD 를 받을 수 있습니다XXX 형식의 네트워크 이벤트는 윈도우즈의 메시지 구동 메커니즘과 이벤트 대상에 의해 연결됩니다.
기본적인 사고방식: 관심 있는 네트워크 이벤트 그룹을 위해 이벤트 대상을 만들고 WSAEventSelect 함수를 호출하여 네트워크 이벤트와 이벤트 대상을 연결한다.
winsock은 이벤트 객체의 함수인 WSACreateEvent를 작성하고 다음을 정의합니다.
WSAEVENT WSACreateEvent(void);// 

만든 후 WSAEventSelect 함수를 호출하여 네트워크 이벤트가 연관되도록 지정합니다.
int WSAEventSelect(
                   SOCKET s,
                   WSAEVENT hEventObject,// 
                   long lNetWorkEvents// 
                   );

WSAWaitForMultipleEvents 함수는 하나 이상의 이벤트에서 기다리거나 이벤트 대상이 편지를 받거나 이벤트가 지나갈 때까지 기다리면 함수가 되돌아옵니다
DWORD WSAWaitForMultipleEvents(
    DWORD cEvents,// 
    const WSAEVENT* lphEvents,// 
    BOOL fWaitAll,// 
    DWORD dwTimeout,// 
    BOOL fAlertable// WSAEventSelect 
);

최대 WSA 지원MAXIMUM_WAIT_EVENTS 개체(64.
WSAWaitForMultiple Events가 네트워크 이벤트의 발생을 기다립니다
 : WSA_WAIT_TIMEOUT

 : 

 : WSA_WAIT_FAILED

dwTimeout 값이 0이고 이벤트 대상의 상태를 지정합니다. 즉시 되돌아와 신뢰 여부를 테스트합니다.
fWaitAll이false로 설정된 후 몇 개가 있으면 하나만 표시할 수 있습니다. 핸들 맨 앞에 있는 그...
 
객체가 트러스트되어 적절한 소켓을 찾아 WSAEnumNetWork Events 함수를 호출하면 네트워크 이벤트를 확인할 수 있습니다.
int WSAEnumNetWorkEvents(
    SOCKET s,
    WSAEVENTS hEventObject,
    LPWSANETWORKEVENTS lpNetworkEvents
);

마지막 매개변수는 소켓에서 발생한 네트워크 이벤트 및 관련 오류 코드를 가져오는 데 사용됩니다.
typedef struct _WSANETWORKEVENTS{
    long lNetworkEvents;// 
    int iErrorCode[FD_MAX_EVENTS];// 
}WSANETWORKEVENTS,*LPWSANETWORKEVENTS;

좋은 웹페이지 즐겨찾기