![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Шурик |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 31.10.2002 Репутация: нет Всего: нет |
Моя прога юзает асинхронные сокеты. Все сетевые действия полагаются только на сообщения окну программы выбранные при помощи WSAAcyncSelect. Таким образом получается, что если я напишу send(...) то моя программа будет продолжать работать в то время как WINSOCK будет пытаться отправлять данные. А если ему ето не удастся ? Как я об етом узнаю ?
WSAAcyncSelect не дает возможность задать событие типа ошибки, там только FD_READ FD_WRITE FD_ACCEPT FD_CONNECT FD_CLOSE Или есть еще что то, про что я не знаю ? Вообщето я много где искал об этом в инете, но подробного описание именно такого случая я не нашел |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
помоему сенд всетаки результат выполнения возращает
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 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. Так что всегда можн определить, что все хорошо. |
|||
|
||||
| Шурик |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 31.10.2002 Репутация: нет Всего: нет |
Да, конечно, только этот результат скорее всего будет следующим:
WSAEWOULDBLOCK - что означает "Извини друг, в данный момент выполнить запись в сокет не могу, ты пока займись своими делами, а я буду отправлять данные" Так что моя прога будет продолжать работу, будет ждать новых сообщений, а вот если в етот момент произойдет ошибка записи в сокет, как мне об этом узнать ? |
|||
|
||||
| Шурик |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 31.10.2002 Репутация: нет Всего: нет |
to AntonSaburov:
Мы с тобой одновременно мессаги постили Дык ты хочешь сказать что для того чтоб узнать нормально ли завершилась операция записи мне надо юзать WSAAcyncSelect ? Постоянно проверять и проверять что ли ? Или я тебя неправильно понял ? to Step: мое последнее сообщение было тебе. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
вставь еще FD_WRITE ТАМ И лови свою отправку
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Читаем дальше 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. У тебя окошко получит сообщение, в котором параметры укажут, что реально произошло. Еще вопросы есть ? |
|||
|
||||
| Шурик |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 31.10.2002 Репутация: нет Всего: нет |
Теперь вопросов нет, сенкс
Признаю, это моя невнимательность ... |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
а перевести слабо... -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Шурик |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |