В пускаче Владимира Дегтяренко реализован обмен данными через сокет между клиентом и сервером. Клиент цепляется к серверу, получает ответ и разрывает соединение. Сервер для передачи данных клиенту создает новый сокет.
Как сделать многопользовательский режим - чтобы несколько клиентов цеплялись к серверу, а он читал и передавал данные выбранному клиенту без разрыва соединения с остальными?
У меня сервер читает из сокета только от последнего подцепившегося клиента, для других выдает ошибку 10035 (ресурс временно недоступен).
Что-то нужно поправить в настройках, или нужно для каждого клиента создавать отдельный поток и сокет?
Как связаться с Владимиром Дегтяренко?
Обмен данными через сокет
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- StillZero
- Ветеран
- Сообщения: 458
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Поблагодарили: 1 раз
- Контактная информация:
есть определенные схемы работы с сокетами, порядка 5 штук, чтобы определиться что тебе нужно, надо достаточно много прочитать
что помню:
1. блокирующие сокеты и select - на каждого клиента по потоку
2. неблокирующие сокеты и WSAAsyncSelect - один поток
3. неблокирующие сокеты и WSAEventSelect (аналог WSAAsyncSelect)
4. неблокирующие сокеты и порты перекрытия (по моему называются IO completion port)
для понимания, самая простая схема первая, самая мега рульная четвертая, четвертая подробно описана во многих местах, есть в MSDN
полезно почитать rsdn.ru, там сетевым делам отдельный форум посвящен
для небольшого количества клиентов подходит вторая схема
вообще ошибка WSAEWOULDBLOCK (10035) означает, не то что "ресурс временно недоступен", а то, что "операция не может быть выполнена прямо сейчас", и является по сути не ошибкой, а предупреждением, обычно как раз появляется в схеме с WSAAsyncSelect
что помню:
1. блокирующие сокеты и select - на каждого клиента по потоку
2. неблокирующие сокеты и WSAAsyncSelect - один поток
3. неблокирующие сокеты и WSAEventSelect (аналог WSAAsyncSelect)
4. неблокирующие сокеты и порты перекрытия (по моему называются IO completion port)
для понимания, самая простая схема первая, самая мега рульная четвертая, четвертая подробно описана во многих местах, есть в MSDN
полезно почитать rsdn.ru, там сетевым делам отдельный форум посвящен
для небольшого количества клиентов подходит вторая схема
вообще ошибка WSAEWOULDBLOCK (10035) означает, не то что "ресурс временно недоступен", а то, что "операция не может быть выполнена прямо сейчас", и является по сути не ошибкой, а предупреждением, обычно как раз появляется в схеме с WSAAsyncSelect