![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
TiKKi |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 13.5.2006 Репутация: нет Всего: 2 |
1. К серваку коннектится клиент, его принимаем функций accept(...).
2. Затем, WSAAsynSelect(..., WM_CLIENTEVENT, FD_READ | FD_CLOSE), этой функцией определяем за какими событиями на сокете клиента будет наблюдать. 3. Затем, чтобы обработать сообщение WM_CLIENTEVENT получаем что-то вроде такого ... SOCKET СSock = Message.WParam; WORD WSAEvent = WSAGETSELECTEVENT(Message.LParam); switch (WSAEvent) { ... case FD_READ: { //читаем данные из CSock return; } ... } ... Вопрос в следующем, правильно же будет,если процесс обработки события FD_READ кинуть в поток ? Ведь, если чтение данных от одного клиента затянется, а в это время пришли данные от другого клиента, который ждет ответа. И тогда, если надо использовать потоки, что делать если опять же чтение данных затянулось и клиент закрыл соединение со своей стороны ? Получается, что FD_READ еще обрабатывается, а уже прилетело FD_CLOSE. |
|||
|
||||
blur |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 9.11.2004 Репутация: 1 Всего: 1 |
А как это клиент сможет закрыть соединение, если он не передал еще все данные(буфер)? |
|||
|
||||
TiKKi |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 13.5.2006 Репутация: нет Всего: 2 |
Если работа с сокетом у клиента вынесена в поток и он просто закрывает прогу. Это как вариант, но точно незнаю прилетит ли в этот случае FD_CLOSE. Мне больше интересно, логично ли будет обработку на серваке события FD_READ выносить в поток, вот
![]() |
|||
|
||||
MoZy |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 4.6.2006 Репутация: -2 Всего: 0 |
TiKKi, логичнее не придумаешь.
![]() --------------------
Experimentia est optima rerum magistra |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |