|
|
|
IdTCPClient: возможно ли клиентом получать просто сообщения от сервера, не прибегая к таймеру?03.07.2013, 12:41. Показов 9710. Ответов 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
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|