гипотетическая проблема

chriselwart

Допустим есть сервер и некоторое количество удаленных от него компьютеров А, Б, В и т.д.
Компьютеры мало того, что удаленные, так еще и с херовыми каналами связи (доверять мы им совершенно не можем, например, это сраные гсм-модемы). Наша задача при появлении возможности (канал поднялся!) начинать передачу некоторой информации с компьютеров на сервер (логи/показания датчиков, которые по сути тоже логи).
Как это лучше всего делать?
Надо учесть, что передача может оборваться. Теоретизируем!

yroslavasako

писал скрипт на питоне. Обрабатывал поднятие/опускание ppp интерфейсов

chriselwart

Ну с интерфейсами то все ясно. Вот допустим послал я какие-нить данные (строку а связь в этот момент оборвалась. Или оборвалась в тот момент, когда сервер мне посылал ответ, что все ок. Мне все эти ситуации надо руками обрабатывать и придумывать или об этом кто то может позаботиться? Писать действительно буду на питоне вероятней всего.

chriselwart

Скажем так задача мне кажется весьма обыденной и мне почему то кажется, что ее уже кто то решил до меня. Хочу готовый питоновский (или какой то еще) модуль для такого трахомудного общения между С и К.

serega1604

>Вот допустим послал я какие-нить данные (строку а связь в этот момент оборвалась. Или оборвалась в тот момент, когда сервер мне посылал ответ, что все ок. Мне все эти ситуации надо руками обрабатывать и придумывать или об этом кто то может позаботиться?
logrotate + rsync мне кажется без проблем покроют твои затраты.

tokuchu

Теоретизируем!
А практики для этого давно UDP используют. :p

tokuchu

Вообще нужно передать всю информацию без потерь в результате? Или в информации могут быть "перерывы", когда связь отсутствует?

chriselwart

Надо именно все передать до байтика.

juliuzz

торрент фигли

YUAL

внезапно сигма прав. правда приватность страдает. хотя можно написать правило для фаервола, которые разрешат торренты только с несколькими пирами.

Sharp

Логи архивировать, нарезать на небольшие кусочки и передавать по одному. В случае неудачи повторить (не важно, обрыв связи, закончилось место на диске сервера или просто сервер оказался выключен).
Задачу гарантированности доставки возложить полностью на TCP. Или SCTP.
Или я не понял всех особенностей данной задачи.

schipuchka1

доверять мы им совершенно не можем
это только про качество соединения или ещё и про секьюрность? Если только про качество, то TCP\IP даёт гарантированную доставку куска, обработать недоставку легко, номера пакетов раздавать согласно специфике данных. Если секьюрность, то всё чуть хуже, на слабых каналах поверх TCP\IP поднимать не особо приятно шифрованый канал.

chriselwart

Ну там сейчас openvpn как то поднимается o_O. Так что я исключительно про стабильность, но никак не про безопасность.

schipuchka1

ну тогда классическое решение - либо просто пересылаем все пакеты с подтверждением и при обрыве циклимся, либо сделать подписку и пересылать занумерованные по какому-нить UDP. (в первом случае дольше, но гарантировать, что прийдёт всё сможем быстрее, во втором - нам не страшен и резет + быстрее, но если потеряются, то прийдётся пересылать). И то и то стандартными функциями делается везде :)
Оставить комментарий
Имя или ник:
Комментарий: