![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
Enelar |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 13.1.2008 Репутация: нет Всего: 1 |
Для своих нужд, удобства, набора опыта и много чего другого пишу сетевой интерфейс. Между платформенным уровнем и моим.
Работа с неблокирующими сокетами. WSAGetLastError выдает одно из трех. WSAEISCONN, WSAEWOULDBLOCK, WSAEINVAL(Соединяюсь на заведомо открытый порт) Собственно читаем документацию
Остается второе. Что это означает, как менять группу, и почему выдает через раз(два три). И второй маленький вопрос по коду.
Не хочется обрабатывать все n состояний WSA, плюс на верхнем уровне у меня все равно должно обрабатываться 4 состояния - удача, ждем, не удача, ошибка. Коннект состоит в переодическом вызывании этой функции. CreateSocket перезаписывает s только один раз. Если вопрос задан коряво, готов принять критику. PS Дополнение. При последующем вызове connect, возвращается WSAISCONN. Получается инвалидный аргумент просто игнорировать??? А вдруг он вылетит по делу??? Это сообщение отредактировал(а) Enelar - 23.1.2011, 20:36 |
||||
|
|||||
Олег2005 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
Как я понимаю - это у вас клиент - раз идет коннект.
Не вижу как формируется адрес address.sin_addr.S_un.S_addr = addr; Насчет групп - они тут не причем, у вас нет QOS. и еще Следует также иметь в виду следующее важное обстоятельство. Если соединение по данному сокету не удалось, то сокет (для некоторых типов ошибок) оказывается в неспецифицированном состоянии, и следует обязательно закрыть только-что неудачно использованный сокет, и перед новым вызовом connect(), например в цикле, вновь должен быть произведен вызов socket(). Приложения, соответствующие стандарту POSIX-2001, должны закрыть дескриптор sd и создать новый сокет для продолжения попыток установить соединение. Однако, если попытка соединения не удалась по причинам WSAECONNREFUSED, WSAENETUNREACH, WSAETIMEDOUT, то приложение может повторить вызов connect() для этого же сокета. WSAEINVAL Some invalid argument was supplied (for example, specifying an invalid level to the setsockopt function). In some instances, it also refers to the current state of the socket—for instance, calling accept on a socket that is not listening. В общем так сразу и не скажешь ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |