LastLeader писал(а):
не работаетЭтот топик читают: Гость
Ответов: 1841
Рейтинг: 369
|
|||
LastLeader, не совсем понятно что у Вас
... |
|||
карма: 1 |
|
Ответов: 3889
Рейтинг: 362
|
|||
LastLeader, Давайте вернёмся к истокам и попробуем по шагам, вот (как обычно, немного ламерский)) ) пример сбора самых разных данных с помощью несколько нестандартного применения ChanelToIndex с последующей упаковкой в поток и засылкой с клиента на сервер. Подавайте любые данные на его точки, в любом порядке. С другой стороны сетевого канала, на выходах IndexToChanel, на соответствующих по номеру событиях будут появляться готовые потоки с Вашими данными в нужном (исходном) виде. (изменения в схему буду вносить тут, если что)
У меня всё работает,на localhost, какая у Вас сеть и качество соединения - учитывайте сами. Пока читаю ветку, можете задавать вопросы по схеме. ------------ Дoбавленo в 13.40: Кстати, если у Вас только текст кнопок, Вам вообще эти потоки нужны? Может тип данных в клиентесервере dtString установите, упростив себе жизнь и отладку? ------------ Дoбавленo в 13.57: Глядите, как Вам такой суперсложный пример (обратите внимание на тип данных сетевых компонент):
|
|||
карма: 1 |
|
Ответов: 316
Рейтинг: 21
|
|||
Делаю управление устройством через сеть.
Серверная часть весит на ком порте слушает порт и высылает название 5 клавиш клиентам http://laba.wet.in.ua/sites/default/files/Server.sha Клиенты могут пробится к серверу через локалку и через интернет. в зависимости вы на работе или дома в частной сети. Пароли сейчас высылает отправляет команды устройству а вот на клавиши прислать текст так и не получается http://laba.wet.in.ua/sites/default/files/Tray_New.sha |
|||
карма: 1 |
|
Ответов: 3889
Рейтинг: 362
|
|||
Мой последний пример видели? На крайний случай отдельный порт под клиентсервер, настроенные на текстовые данные, т.к. динамически тип не переключить, а с потоками у Вас, говорите, какая-то проблема.
А вообще Вы бы сделали одну маленькую схему, по примеру моих. Клиент и сервер на одном поле, связь через localhost. Оставьте ТОЛЬКО то, что "не работает", там явно не более десятка элементов будет. ------------ Дoбавленo в 08.50: Попробовал разобраться у Вас там (клиент 291 элемент, сервер 724 ), нет, уж будьте добры, только "нерабочий" кусок в студию. Цепочкой из одиночных элементов: одна кнопка, один дешифратор индекса в канал, один распаковщик потока, один TCP клиент, один сервер, один упаковщик... ну, Вы поняли. Не исключаю, что в процессе упрощения Вы и сами найдёте свою ошибку. Я догадываюсь, в чём она, но пока подожду более адекватного примера Вашего кода. |
|||
карма: 1 |
|
Ответов: 4641
Рейтинг: 334
|
|||
1nd1g0, [flood]
1nd1g0 писал(а): более адекватного примера Вашего кода.и это правильно. Есть такая группа пользователей, которые даже не смотрят примеры как примеры. Им подавай законченное приложение. А разговорчики что то нерабоатет или еще что то это такая завуалированная просьба сделать все за него. Я могу и ошибаться но в большинстве случаев именно так. 1nd1g0, я сам так делаю. даю только примеры и намеки (если это действительно простая задача) или объясняю на пальцах, дабы дать возможность человеку додуматься до чего нибудь самому.[/flood] |
|||
карма: 1 |
|
Ответов: 3889
Рейтинг: 362
|
|||
Ravilr,
[flood]На себе уже проверил, когда сам не заметил, как за человека двупанельный браузер написал при том, что это была вообще вторая моя в жизни программа на HiAsm и я даже СЕБЕ никогда ещё ничего не "конструировал")) Судя по более чем 1000 компонентов в сумме, LastLeader хотя бы не такой ленивый, но я намеренно подправил сообщение и удалил все мои замечания к его коду, не соответствующие топику, вот по сетевому коду - пожалуйста, даст свой пример, если правда не работает, поправлю в меру своих сил. Что характерно, мне никто не задаёт вопросов по схеме, зачем там какой элемент, что как работает, копируют и пристраивают в меру своего понимания молча)[/flood] |
|||
карма: 1 |
| ||
Голосовали: | LastLeader |
Ответов: 316
Рейтинг: 21
|
|||
А как можно организовать вот такое?
Или что-то наподобие, может не с потоками а с вставкой инфы или на кабелях? code_23455.txt Делал маленькие схемки они работают))) А большая не хочет [flood] 1nd1g0 писал(а): LastLeader хотя бы не такой ленивый |
|||
карма: 1 |
| ||
файлы: 1 | code_23455.txt [956B] [117] |
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
LastLeader, через TCP можно проборсить только непрерывные бинарные даные, MT поток -- это не непрерывные бинарные данные, а цепочка разнородных данных, находящихся в разных участках памяти. Пробросить их черех TCP можно только превратив MT-поток в непрерывные бинарные данные (Stream или ASCII String). Кабель -- это виртуальный хаб, те, это вообще не данные, а последовательность событий, для наглядности показанные как одна линия
|
|||
карма: 22 |
|
Ответов: 316
Рейтинг: 21
|
|||
карма: 1 |
| ||
файлы: 1 | code_23456.txt [2.1KB] [104] |
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
LastLeader писал(а): Вот что мне нужно былоНо подобие этого тебе и приводил 1nd1g0 несколькими постами выше |
|||
карма: 22 |
|
Ответов: 316
Рейтинг: 21
|
|||
nesco писал(а): Но подобие этого тебе и приводил 1nd1g0 несколькими постами выше1nd1g0 - Особая благодарность Я его пример и взял за основу |
|||
карма: 1 |
|
Ответов: 3889
Рейтинг: 362
|
|||
LastLeader, вижу, Вам понравилась упаковка в поток. В случае с большим количеством однотипных данных это проще и надёжнее, чем делать перебор и слать по отдельным входам шифратора. Шифратор (ChanelToIndex) я приводил в пример асинхронной последовательно-поочерёдной связи, когда на любой вход в неизвестный момент может поступить одно событие с данными в потоке. Если у Вас фиксированное число параметров при каждой передаче,то шифрациюдешифрацию вообще можно убрать, пример "параллельной", синхронной связи с передачей разных данных одним пакетом после объединения, количество и типы данных заданы жёстко:
code_23459.txt ------------ Дoбавленo в 08.55: Я тут вспомнил, что у Вас при выборе сервера применяется сразу несколько элементов PING. Мне кажется, в этом нет необходимости, больше недостатков. Во-первых, пинги расставлены у вас в основном потоке (main thread) приложения, и оно может заметно "подвисать" на таймауты при плохой связи. Во-вторых, пинг (протокол ICMP) может (не редкость) быть заблокированутрачен на NAT, маршрутизаторах, файерволах и разных проактивных защитах. Ну, и в третьих, TCP_client уже имеет события onError (не реализовано) onConnect и onDisconnect, позволяющие сделать выводы о пропадании связи с сервером и переключиться на следующий по списку. Ещё одним плюсом onDisconnect является оперативная реакция на пропаданиеразрыв связи, в отличие от однократного PING, который был у Вас в схеме. Даже если PING вызывать регулярно, при плохой связи он будет лишь подтормаживать приложение, пока делает вывод о доступности сервера. А при особо плохой связи, получив превышение таймаута и не дождавшись ответа, который порой идёт ОЧЕНЬ долго (классический пример - некачественный региональный "мобильный интернет"), он сделает выводы неверно и программа по Вашей схеме вообще уйдёт пинговать альтернативный сервер в ИнтернетLAN, то есть потратит некоторое время не работая. Удачи в сетевом программировании) |
|||
карма: 1 |
| ||
файлы: 1 | code_23459.txt [1.6KB] [108] |
Ответов: 3349
Рейтинг: 233
|
|||
1nd1g0 писал(а): onErrorЭто то, которое не работает(оно закоментированно)? |
|||
карма: 1 |
| ||
Голосовали: | 1nd1g0 |
Ответов: 3889
Рейтинг: 362
|
|||
Ivann, спасибо за науку Действительно, посмотрел в hiTCP_Client.pas , так сказать, "вывод микросхемы не используется", то есть что вешаю на неё, что нет, если бы ошибка правда произошла, не заметил бы
LastLeader, тогда идём от обратного, используем onConnect (подсуетился, посмотрел, она скомпилируется нормально), отсутствие которого скажет нам о возможных проблемах с сервером, однако от подвисания это нас не сильно избавит, более того, если сервер не ответит, то событие так и не произойдёт, а значит, придётся реализовывать перебор серверов отдельным потоком или по независимому таймеру. |
|||
карма: 1 |
|
Ответов: 316
Рейтинг: 21
|
|||
Поменял сервер и клиент местами для соответствия и поровнял связи. Может кому пример сгодится.
code_23464.txt Да пинг иногда глючит, просто до него руки еще не дошли. |
|||
карма: 1 |
| ||
файлы: 1 | code_23464.txt [2KB] [118] |