![]() |
|
Модераторы: feodorv |
![]()
|
|
| VardanK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 13.5.2008 Репутация: нет Всего: нет |
Доброго времени суток. У меня какая-то проблема с получением идентефикатора сокета. Работаю Я с WinSock 2.
В моей программе я вызываю функцию WSAAsyncSelect(servsocket,hWnd,WM_SERVER_EVENT, FD_ACCEPT|FD_CLOSE) где WM_SERVER_EVENT у меня равен WM_USER+2. После чего отлавливаю сообщение WM_SERVER_EVENT следующим образом
Так вот в MSDN написанно что: The wParam parameter identifies the socket on which a network event has occurred. Но на практике оказывается что это не так. Для FD_ACCEPT оно в течении одного сеанса (т.е. программа клиента не перезапускается) не меняется а для FD_CLOSE оно всегда меняется, причем либо возростает, либо убывает! |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 1 Всего: 14 |
потому, что FD_ACCEPT сообщает вам что на слушающем сокете появилось входящее соединение - дескриптор сокета в wParam - это слушающий сокет. Для получения нового присоединившегося сокета надо вызвать WSAAccept читайте мануалы до конца |
|||
|
||||
| VardanK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 13.5.2008 Репутация: нет Всего: нет |
Спасибо большое за подсказку. Я последовал ей с поправкой (до конца) -> (повнимателнее) и оказалось что:
Т.е. сообщение для FD_CLOSE перехватывалось для клиентского сокета, а FD_ACCEPT для слушающего сокета. СПАСИБО! |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |