Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

события сокета

2.0K
01 апреля 2005 года
v0id
31 / / 08.04.2003
Народ, помогите, не могу разобраться с сабжем..
Вобщем задача проста, нужно по событию FD_READ, принять инфу. Событие то я создал
WSAEventSelect(sock,NewEvent,FD_READ); ..
а вот как понять когда оно произойдёт, чтобы потом сделать recv???
Долго втыкал в СДК, нашёл там функцию WSAAsyncSelect, она сообщает о произошедшем событии.. Казалось бы вот оно, то что надо.. На самом деле эта функция сообщает о событии сокета через оконные сообщения, что для меня не очень удобно.. А как быть если у программы нет окна??? Разве нет другого способа узнать о событии сокета??
9.5K
01 апреля 2005 года
nikiforov
24 / / 21.03.2005
Если приложение оконное (не консольное), то можно создать "message only" окно, и оно будет принимать сообщения.

Если приложение консольное, то можно использовать WSAWaitForMultipleEvents() в отдельном потоке.

Так же Можно использовать "overlapped" сокет, и указать ему функцию вызываемую при завершении какой-либо операции:
 
Код:
void CALLBACK
  CompletionRoutine(
    IN DWORD  dwError,
    IN DWORD  cbTransferred,
    IN LPWSAOVERLAPPED  lpOverlapped,
    IN DWORD  dwFlags
    );
2.0K
02 апреля 2005 года
v0id
31 / / 08.04.2003
спасибо.. буду разбираться..
2.0K
04 апреля 2005 года
v0id
31 / / 08.04.2003
а можно пример с WSAWaitForMultipleEvents()??
что то я плохо врубаюсь...
9.5K
05 апреля 2005 года
nikiforov
24 / / 21.03.2005
Цитата:
Originally posted by v0id
а можно пример с WSAWaitForMultipleEvents()??
что то я плохо врубаюсь...



Загляни сюда:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/wsawaitformultipleevents_2.asp

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог