|
|
|
IdTCPClient: возможно ли клиентом получать просто сообщения от сервера, не прибегая к таймеру?03.07.2013, 12:41. Показов 9694. Ответов 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): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|