|
|
|
IdTCPClient: возможно ли клиентом получать просто сообщения от сервера, не прибегая к таймеру?03.07.2013, 12:41. Показов 9790. Ответов 25
Метки нет (Все метки)
Вопрос в следующем, возможно ли клиентом получать просто сообщения от сервера,не прибегая к таймеру. Допусти при кокнете, я могу сделать что бы клиент ждал ответ от сервера..ну вот он его получил, и как ждать следующий (таймер мне кажется не верное решение).
Если нет решения, то подскажите рабочий пример передачи сообщений между обычными сокетами (XE3, не билдер6). Та как в XE3 (не знаю как в младших версиях) сокеты стали какие то замудреные, пакеты клиент отказывается принимать, а серверу приходится самому объявлять события приема пакета С уважением.
0
|
|
| 03.07.2013, 12:41 | |
|
Ответы с готовыми решениями:
25
IdTcpServer & IdTcpClient Использование IdTCPClient |
|
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
|
|
| 03.07.2013, 13:41 | |
|
вот аналогичная вашей тема
и "головой об стену" получается из за некоторых недопониманий идеи клиент-сервер. а там все просто: клиент всегда инициатор, сервер ответчик. и этого достаточно, беда только в том, что не всем хватает найти в себе смелости наделить один объект одновременно св-вами клиента и сервера, при этом если в объекте преобладают функции сервера, он будет Сервером, и наоборот. пример: парикмахерские - сервера, прохожие - клиенты. нужно прохожему подстричься, он обратится в парикмахерскую. по умолчанию наоборот не бывает. но если вдруг парикмахер захочет зазвать к себе клиентов рекламой, объявлениями по всему городу или просто выйдет на улицу и будет орать: "подстригу за дешево!" он временно перестанет быть тем самым Сервером, он будет видеть в каждом прохожем Сервер и будет цепляться(уже как Клиент) к нему со своими предложениями ,то бишь в каждом прохожем есть в голове серверок, на которые он принимает всяческие призывы, а затем решает зайти ему побриться или нет, уже в качестве Клиента... но это на самом деле не так часто требуется, т.е именно такая критичность. вполне достаточно того, что с каким-то интервалом волосы у людей отрастают и соответвенно с определенной периодичностью человек-таки посещает парикмахерскую. понимаете о чем я? поступайте как решите нужным
1
|
|
|
|
|
| 03.07.2013, 14:15 [ТС] | |
|
Да я понял о чем Вы и благодарю за ссылку на тему, но перед тем как написать,все темы перерыл и на нее наталкивался.
Просто в BCB6 был удобный как клиент так и сервер (обычные сокеты), писал бы в нем, но к сожалению нужно имено среде XE3 написать. На счет что бы все таки сделать таймер, то не понятно как быть с пакетами которые с десяток в пол секу приходят. Но все равно спасибо что не поленились и откликнулись.
0
|
|
|
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
|
||
| 04.07.2013, 05:13 | ||
|
возможно даже придется отказаться от готовых компонентов. вчера все-таки вычитал, что winapi-шными сокетами используя SendTo можно отправлять сообщения сервером конкретному клиенту, ну и понятно широковещание там же.
1
|
||
|
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
|
|
| 04.07.2013, 10:03 | |
|
Клиент постоянно обращается к серверу в отдельном потоке. Можно с некоторой задержкой. Подключился, если данные есть, он их обрабатывает или передаёт/записывает куда надо. Отключается, опять подключается и т.д. Сервер свои данные подготавливает, буферизует и, как только клиент подключается, передаёт ему всё накопленное и начинает заново копить и ждать подключения.
0
|
|
|
|
|
| 04.07.2013, 10:42 [ТС] | |
|
AntonChik Вы совершено правы. но проблема в том что XE3 сокеты обделены нормальным приемом пакетов (я сейчас именно про сервер), так ка там в отличие от bsb6 пропало событие "Он Рид". Я заметил что в XE его можно объявить самостоятельно, но тогда в нем не возможно объявить от какого клиента пришел пакет.
Вторая сторона медали,а уже сам клиент сокета, он категорически отказывается принимать пакеты через стандартные свои события. Не понятно зачем так загадили сокеты, ведь все так было хорошо в bcb6 =)
0
|
|
|
|
|
| 04.07.2013, 17:05 [ТС] | |
|
прошу прощения, не могу понять а что за код, который Вы предоставили в теме про XE3 может помочь моей проблеме?
Уточню что клиент может только раз слать пакет серверу и больше его не трогать, а сервер в процессе включения может слать огромное количество пакетов всем соединенным клиентам. С уважением
0
|
|
|
|
|
| 04.07.2013, 17:10 | |
|
0
|
|
|
|
|
| 04.07.2013, 17:23 [ТС] | |
|
А читал тему, к сожалению не нашел для себя в ней полезной информации..а проблема в следующем: Есть сервер и с десяток клиентов, они только логинятся на нем и большую часть времени слушают,изредка посылая на него пакеты.
Думал решить это или просто сокетами или инди соедеинением: 1) Если инди клиент, то неудобно слушать пакеты, приходится делать таймер на прослушку. А так как в секунду может прийти грубо говоря с 20 пакетов...то при каждом тайминге их наваливается столько много, и не получается нормально их обработать. а порой даже с антифризом клиент замирает намертво. 2) Обычные сокеты проблема а) с сервером, непонятно как в событие "он ресив" передавать от кого клиента пришел пакет б) клиент хоть как то отказывается реагировать в своем событие "он ресив"
0
|
|
|
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
|
|
| 05.07.2013, 09:44 | |
|
Dinkin
Мой вариант чем не устраивает?
0
|
|
|
|
|
| 05.07.2013, 10:19 [ТС] | |
|
c0rvax На самом деле интересный вариант...испугало именно то что нужно будет еще работать над пакетами, то есть с начало копить, а после массу разбирать))
Если Вас не затруднит, вы не могли просто накидать не большой пример (пускай кривой и не совсем рабочий), что бы глядя на него можно было понять как работать в потоке с запросом от инди клиента
0
|
|
|
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
|
|
| 05.07.2013, 16:23 | |
|
Dinkin
У меня не ХЕ. Может лучше показать свой код?
0
|
|
|
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
|
|
| 05.07.2013, 17:13 | |
|
Свой код покажи, свой. Не мой.
0
|
|
|
|
||||||
| 05.07.2013, 19:59 [ТС] | ||||||
|
Данный кусок кода конектится и и ждет ответ от сервера
0
|
||||||
|
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
|
||||||
| 05.07.2013, 20:18 | ||||||
|
Весь этот код помещаешь в отдельный поток
1
|
||||||
|
|
||||||
| 05.07.2013, 20:21 | ||||||
Не хорошо так делать, тут могут быть проблемы.
0
|
||||||
| 05.07.2013, 20:21 | |
|
Помогаю со студенческими работами здесь
20
Сменился ли у IdTCPServer и IdTCPClient режим работы? IdTCPClient не коннектится Сократить таймаут и количество посылаемых пакетов IdTCPClient
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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.
В качестве источника данных. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|