LastLeader писал(а):
не работаетЭтот топик читают: Гость
|
Ответов: 1841
Рейтинг: 370
|
|||
|
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 |
|||
| карма: 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] [155] |
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
LastLeader, через TCP можно проборсить только непрерывные бинарные даные, MT поток -- это не непрерывные бинарные данные, а цепочка разнородных данных, находящихся в разных участках памяти. Пробросить их черех TCP можно только превратив MT-поток в непрерывные бинарные данные (Stream или ASCII String). Кабель -- это виртуальный хаб, те, это вообще не данные, а последовательность событий, для наглядности показанные как одна линия
|
|||
| карма: 22 |
|
|
Ответов: 316
Рейтинг: 21
|
|||
| карма: 1 |
| ||
| файлы: 1 | code_23456.txt [2.1KB] [126] |
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
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] [131] |
|
Ответов: 3349
Рейтинг: 233
|
|||
|
1nd1g0 писал(а): onErrorЭто то, которое не работает(оно закоментированно)? |
|||
| карма: 1 |
| ||
| Голосовали: | 1nd1g0 |
|
Ответов: 3889
Рейтинг: 362
|
|||
|
Ivann, спасибо за науку
LastLeader, тогда идём от обратного, используем onConnect (подсуетился, посмотрел, она скомпилируется нормально), отсутствие которого скажет нам о возможных проблемах с сервером, однако от подвисания это нас не сильно избавит, более того, если сервер не ответит, то событие так и не произойдёт, а значит, придётся реализовывать перебор серверов отдельным потоком или по независимому таймеру. |
|||
| карма: 1 |
|
|
Ответов: 316
Рейтинг: 21
|
|||
|
Поменял сервер и клиент местами для соответствия и поровнял связи. Может кому пример сгодится.
code_23464.txt Да пинг иногда глючит, просто до него руки еще не дошли. |
|||
| карма: 1 |
| ||
| файлы: 1 | code_23464.txt [2KB] [142] |



Поиск
Друзья
Администрация