void CALLBACK
CompletionRoutine(
IN DWORD dwError,
IN DWORD cbTransferred,
IN LPWSAOVERLAPPED lpOverlapped,
IN DWORD dwFlags
);
события сокета
Вобщем задача проста, нужно по событию FD_READ, принять инфу. Событие то я создал
WSAEventSelect(sock,NewEvent,FD_READ); ..
а вот как понять когда оно произойдёт, чтобы потом сделать recv???
Долго втыкал в СДК, нашёл там функцию WSAAsyncSelect, она сообщает о произошедшем событии.. Казалось бы вот оно, то что надо.. На самом деле эта функция сообщает о событии сокета через оконные сообщения, что для меня не очень удобно.. А как быть если у программы нет окна??? Разве нет другого способа узнать о событии сокета??
Если приложение консольное, то можно использовать WSAWaitForMultipleEvents() в отдельном потоке.
Так же Можно использовать "overlapped" сокет, и указать ему функцию вызываемую при завершении какой-либо операции:
Код:
спасибо.. буду разбираться..
что то я плохо врубаюсь...
Цитата:
Originally posted by v0id
а можно пример с WSAWaitForMultipleEvents()??
что то я плохо врубаюсь...
а можно пример с WSAWaitForMultipleEvents()??
что то я плохо врубаюсь...
Загляни сюда:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/wsawaitformultipleevents_2.asp