Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с объектами событий, сугубо теоретический вопрос 
:(
    Опции темы
mrbrooks
Дата 18.4.2008, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



Комрады!
Написал консольный клиент который записывает инфу на сервак и получает ответ в случае успешной записи.  smile 
В случае если сервак загнулся (вся программа у меня зациклена) все начинается заново - клиент так и долбит пока не соединится. Но как то это не по людски.

Посиму я решил заюзать следующую идею:

Код

//мой предпологаемый алгоритм
..........
WSAStartup();
sockaddr.....
socket();
connect();
..........
WSANETWORKEVENTS fuck;
WSAEVENT wsaevent = WSACreateEvent();
WSAEventSelect(socket,  wsaevent, FD_ALL_EVENTS);

while(true)
      {
        DWORD res = WaitForMultipleObjects(1, &wsaevent,0,5000,0);
       switch(res)
                 {
                  case WSA_WAIT_TIMEOUT: printf("fuck side"); break;
                  case WSA_WAIT_EVENT_0:
                  WSAEnumNetworkEvents(socket, wsaevent, &fuck);
                  /*          switch (fuck)
                                          {
                                           case FD_READ:  
                                           case FD_CONNECT:   //эти события почему то не отлавливаются и я на них пока забил болт
                                           case FD_CLOSE:
                                           case FD_WRITE:
                                          }*/
                                     printf("good\n");
                 /*здесь идет send() и recv()*/
                                     Sleep(100);
                                     break;
                }
      }
........
closesocket();
WSACleanup();
........


Собственно так работает но как только связь рвется - вечный WSA_WAIT_TIMEOUT с сообщением "fuck side".
Скажите с помощью такого подхода можно восстановить соединение с серваком? (не такого конечно - но в духе объектов событий).



PM MAIL   Вверх
jonie
Дата 18.4.2008, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



а ты попробуй открывать и закрывать соединение, а не держать его всегда открытым. и проблемы не будет.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
mrbrooks
Дата 19.4.2008, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



jonie это грубо говоря так:
Код

....
case WSA_WAIT_EVENT_0:
                                     printf("good\n");
                                     connect();
                                     send();
                                     recv();
                                     closesocket();
                                     Sleep(100);
                                     break;
....


я правильно мозгую  smile ?
PM MAIL   Вверх
jonie
Дата 19.4.2008, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



ну типа того ) логика такая, да.
while(life) {
открыл, что надо передал, если надо прочел ответ, закрыл, спим.
 }


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
mrbrooks
Дата 21.4.2008, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



хы. тогда зачем вообще нежны этисобытия если все можно сделать сугубо на сокетах?
PM MAIL   Вверх
mrbrooks
Дата 28.4.2008, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



up. я конечно извиняюсь за новязчивость - но все таки кто нить поможет мне прояснить ситуцию. нужныли эти события или все как по старинке - с зацикливаемыми сокетами? smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0480 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.