информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Все любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 700 с лишним git-серверов пострадало... 
 От повторного пришествия Шаи-Хулуда... 
 Крупный сбой Azure и других сервисов... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Поможите с сокетами 19.07.01 02:22  Число просмотров: 890
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
если есть проблема в "неуспевании", то юзай AutoReset Event.
вот тут
> stats=WaitForMultipleObjects(2,lpEvents,FALSE,m_timeout);
он поставит Event на Non-Signaled state.

а вообще подобного рода задача решается немного по другому. для этого есть очень полезная штука: WSAEnumNetworkEvents()
почитай об этом. он сделает тебе ресет, и еще вернет статус сокета.

удачи
<programming>
[Win32] Поможите с сокетами 19.07.01 01:58  
Автор: Heromantor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Проблема следующая: имеется неблокирующий сокет, который связан с eventом посредством ф-ции WSAEventSelect так вот сама проблема. Когда я принимаю даные с локальной программы(POP3 сервера) то часть из них проглатывается ибо отсылает он нужный блок несколькоми пакетами и соответственно надо как-то это дело принять причем event срабатывает настолько быстро что сбрасывая текущее событие уже приходит новое и получается так что сбрасывается и следующее соответственно блок еще не принят а ф-ция WaitFoeMultipleEvents не срабатывает.
Вот мой кусок кода:

#define RECIEVE(buf,okstr)\
{\
buf[0]=0;\
stats=WaitForMultipleObjects(2,lpEvents,FALSE,m_timeout);\
switch(stats)\
{\
case WAIT_OBJECT_0: goto goto_on_stop;\
case WAIT_OBJECT_0+1 : ResetEvent(lpEvents[1]);\
break;\
default: goto goto_on_error;\
}\
iTmp = recv(s, buf, sizeof(buf), NULL);\
if (iTmp == SOCKET_ERROR)goto goto_on_error;\
buf[iTmp]=0;\
if (strstr(buf,okstr)==NULL)goto goto_on_error;\
}

может кто подскажет че-нить
[Win32] Поможите с сокетами 19.07.01 04:58  
Автор: ggg Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Вот мой кусок кода:
> stats=WaitForMultipleObjects(2,lpEvents,FALSE,m_timeout);\
> switch(stats)\
> {\
> case WAIT_OBJECT_0: goto
> case WAIT_OBJECT_0+1 :


для сокетов есть WSAWaitForMultipleEvents
не знаю может она и может быть заменена WaitForMultipleObjects() но я этого нигде в SDK не видел
[Win32] Поможите с сокетами 19.07.01 02:22  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
если есть проблема в "неуспевании", то юзай AutoReset Event.
вот тут
> stats=WaitForMultipleObjects(2,lpEvents,FALSE,m_timeout);
он поставит Event на Non-Signaled state.

а вообще подобного рода задача решается немного по другому. для этого есть очень полезная штука: WSAEnumNetworkEvents()
почитай об этом. он сделает тебе ресет, и еще вернет статус сокета.

удачи
[Win32] А я аот еще хотел спросить... 19.07.01 11:05  
Автор: Heromantor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Есть ли отличия WaitForMultipleObject И WSAWaitForMultipleEvents? А то инфы по этому вопросу я нашел очень мало.
[Win32] А я аот еще хотел спросить... 19.07.01 21:31  
Автор: ggg Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Есть ли отличия WaitForMultipleObject И
> WSAWaitForMultipleEvents? А то инфы по этому вопросу я
> нашел очень мало.

а с чего ты решил что они должны быть похожи ?
еще как похожи :))) 20.07.01 01:10  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Есть ли отличия WaitForMultipleObject И
> > WSAWaitForMultipleEvents? А то инфы по этому вопросу я
> > нашел очень мало.
>
> а с чего ты решил что они должны быть похожи ?

я такое уже делал не раз. и даже такое :

WSAEVENT hEvent = WSACreateEvent();
...................
::MsgWaitForMultipleObjects(1, &hEvent : NULL, FALSE, m_nTimeout, QS_ALLEVENTS);

работают как часики :)))

Event - это объект ядра. нет такого, чтобы для App это был один, а под Сокеты другое. это монопенисные вещи !
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach