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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> send  с асинхронным сокетом. а что если произошла ошибка ? 
:(
    Опции темы
Шурик
Дата 10.12.2002, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 31.10.2002

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



Моя прога юзает асинхронные сокеты. Все сетевые действия полагаются только на сообщения окну программы выбранные при помощи WSAAcyncSelect. Таким образом получается, что если я напишу send(...) то моя программа будет продолжать работать в то время как WINSOCK будет пытаться отправлять данные. А если ему ето не удастся ? Как я об етом узнаю ?
WSAAcyncSelect не дает возможность задать событие типа ошибки, там только
FD_READ
FD_WRITE
FD_ACCEPT
FD_CONNECT
FD_CLOSE
Или есть еще что то, про что я не знаю ?
Вообщето я много где искал об этом в инете, но подробного описание именно такого случая я не нашел :(
PM MAIL   Вверх
Step
Дата 10.12.2002, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



помоему сенд всетаки результат выполнения возращает


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
AntonSaburov
Дата 10.12.2002, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



RTFM - MSDN
int WSAAsyncSelect
...
Return Values
If the WSAAsyncSelect function succeeds, the return value is zero provided the application's declaration of interest in the network event set was successful. Otherwise, the value SOCKET_ERROR is returned, and a specific error number can be retrieved by calling WSAGetLastError.

Так что всегда можн определить, что все хорошо.
PM MAIL WWW ICQ   Вверх
Шурик
Дата 10.12.2002, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 31.10.2002

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



Да, конечно, только этот результат скорее всего будет следующим:
WSAEWOULDBLOCK - что означает "Извини друг, в данный момент выполнить запись в сокет не могу, ты пока займись своими делами, а я буду отправлять данные"
Так что моя прога будет продолжать работу, будет ждать новых сообщений, а вот если в етот момент произойдет ошибка записи в сокет, как мне об этом узнать ?
PM MAIL   Вверх
Шурик
Дата 10.12.2002, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 31.10.2002

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



to AntonSaburov:
Мы с тобой одновременно мессаги постили :)

Дык ты хочешь сказать что для того чтоб узнать нормально ли завершилась операция записи мне надо юзать WSAAcyncSelect ?
Постоянно проверять и проверять что ли ?
Или я тебя неправильно понял ?


to Step: мое последнее сообщение было тебе.
PM MAIL   Вверх
Step
Дата 10.12.2002, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



вставь еще FD_WRITE ТАМ И лови свою отправку


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
AntonSaburov
Дата 10.12.2002, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Цитата
to AntonSaburov:
Мы с тобой одновременно мессаги постили :)

Дык ты хочешь сказать что для того чтоб узнать нормально ли завершилась операция записи мне надо юзать WSAAcyncSelect ?
Постоянно проверять и проверять что ли ?
Или я тебя неправильно понял ?


to Step: мое последнее сообщение было тебе.

Читаем дальше :)

When one of the nominated network events occurs on the specified socket s, the application's window hWnd receives message wMsg. The wParam parameter identifies the socket on which a network event has occurred. The low word of lParam specifies the network event that has occurred. The high word of lParam contains any error code. The error code be any error as defined in Winsock2.h.

У тебя окошко получит сообщение, в котором параметры укажут, что реально произошло. Еще вопросы есть ?
PM MAIL WWW ICQ   Вверх
Шурик
Дата 10.12.2002, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 31.10.2002

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



Теперь вопросов нет, сенкс :)
Признаю, это моя невнимательность ... :)
PM MAIL   Вверх
Step
Дата 10.12.2002, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



Цитата(AntonSaburov @ 10.12.2002, 14:14)
When one of the nominated network events occurs on the specified socket s, the application's window hWnd receives message wMsg. The wParam parameter identifies the socket on which a network event has occurred. The low word of lParam specifies the network event that has occurred. The high word of lParam contains any error code. The error code be any error as defined in Winsock2.h.

а перевести слабо...


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Шурик
Дата 10.12.2002, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 31.10.2002

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



Если кому надо:

When one of the nominated network events occurs on the specified socket s, the application's window hWnd receives message wMsg. The wParam parameter identifies the socket on which a network event has occurred. The low word of lParam specifies the network event that has occurred. The high word of lParam contains any error code. The error code be any error as defined in Winsock2.h.

Когда одно из "указаных" событий происходит на сокете s, окно приложения hWnd получает сообщение wMsg. В wParam'e - сокет, на котором произошло событие. Нижнее слово lParam содержит событие которое произошло, верхнее - какой-то код ошибки. Код ошибки может быть любым как определено в Winsock2.h
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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