|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 26
|
|
Сокеты, одновременная работа с несколькими клиентами !!!26.02.2012, 21:31. Показов 12236. Ответов 52
Метки нет (Все метки)
Привет, совсем запутался с сокетами. Нужно такое приложение, которое будет обрабатывать сразу много клиентов. Причем в такой схеме может возникнуть ситуация, что сервер может начать работать с одним клиентом, потом начать со вторым в другом потоке, закончить работу со вторым и вернуть ему результат, и потом закончить работу уже с первым и вернуть ему свой результат.
Какой тип сокетов мне использовать? Схема работы сервера такая: он должен получать все сообщения от множества клиентов и добавлять их в очередь, далее после каждого добавленного сообщения в очередь вызывается функция на проверку есть ли свободные потоки, и если есть то передать свободному потоку id клиента и его запроса, далее этот поток должен обработать запрос, вернуть клиенту результат, снова вызвать функцию на проверку очереди и самозавершиться. Если с потоками разобрался, то с сокетами беда вообще. Возможно существует какой-нибудь простой класс для сокитов под линукс, чтобы можно было создать сокет, добавить к нему функцию обрабатывающую событие поступления нового сообщения от клиентов, и функцию ответа клиенту по его id номеру. В си новичок, просьба не пинать. Спасибо!
0
|
|
| 26.02.2012, 21:31 | |
|
Ответы с готовыми решениями:
52
Одновременная работа с несколькими ST-LINK/V2 в IAR сессии и одновременная работа под несколькими пользователями |
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 26
|
||||||
| 28.02.2012, 16:39 [ТС] | ||||||
Возможно это из за того, что сокеты открываются по идеи через сам php, а это одно приложение? Как же тогда работает тот же редис или mysql ... там одновременно много подключений делается.
0
|
||||||
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 26
|
|
| 29.02.2012, 02:37 [ТС] | |
|
Подскажи какой командой проверить можно? Файл сервера висит в процессах, называется server
Добавлено через 1 час 25 минут Еще выявил такой косяк, код твой полностью, отправляет клиент сообщение вида "STROKA TEST" обрабатывает и отвечает. При втором соединении клиент отправляет сообщение вида "TEST". После завершения чтения при попытке сделать message.get() получаем сообщение "TESTOKA TEST". Тоесть я так понимаю он буфер не очищает. Совсем запутался как работает вся эта система, как такое может быть если message внутри on_accept_handler как локальная переменная создаётся?
0
|
|
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 26
|
||||||
| 29.02.2012, 14:54 [ТС] | ||||||
|
Через телнет проверил, многопоточность работает, но через php никак не хочет. В чем же дело?
Вот код. У меня два потока вручную задано. Отправляю первое сообщение "TEST". Все ок принимает правильно. Отправляю второе "TES", принимает как надо. Отправляю третье "TE", четвертое и т.д. получаем в message.get() что-то вроде "TE0?(". Иногда такая картина наблюдается уже со второго сообщения. Свои функции закомментировал.
https://github.com/antirez/hiredis
0
|
||||||
|
|
|||
| 29.02.2012, 16:17 | |||
|
1
|
|||
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 26
|
|
| 29.02.2012, 16:59 [ТС] | |
|
Проблему с передаваемым текстом решил. Теперь осталось решить вопрос как запускать одновременные подключения из под php приложения. Не подскажешь?
0
|
|
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 26
|
||||||
| 29.02.2012, 17:19 [ТС] | ||||||
НО когда я элементарно создаю в браузере две вкладки 127.0.0.1/connect.php и почти одновременно жду обновить, в первой ответ приходит через 10с, во второй через 20с. В самом сервере также видно что он сначала принимает первого клиента, и только после закрытия соединения принимает второго. Добавлено через 22 секунды Как это php-шное ограничение можно обойти? Добавлено через 4 минуты Мне надо в итоге получить такую связку, чтобы несколько одновременных запросов от разных посетителей сайта сервер обрабатывал, и вот тут пхп этого не дает сделать(
0
|
||||||
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 26
|
|
| 29.02.2012, 18:01 [ТС] | |
|
А как это дело организовать через php-extension? там же можно только функции свои добавить, будет ли там работать неблокирующий режим?
0
|
|
|
|
|
| 02.03.2012, 12:41 | |
|
Kirm, ну что, разобрался?
0
|
|
| 02.03.2012, 12:41 | |
|
Помогаю со студенческими работами здесь
53
Одновременная работа с XML файлом несколькими людьми сервер чата с несколькими клиентами Совет по работе с несколькими TCP клиентами
Одновременная запись в файл несколькими потоками Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|