Форум по программированию Delphi Sources

 



Вернуться   Форум по программированию Delphi Sources > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.04.2018, 16:49
Reba Reba вне форума
Прохожий
 
Регистрация: 05.04.2018
Сообщения: 14
Версия Delphi: Delphi 7
Репутация: 10
Сообщение Сокеты

Всем привет подскажите пожалуйста, вот у меня есть клиент и сервер серверов у меня больше 10 шт резервные но они работают все подключение идет из списка по ip-port кто доступен к тому и подключился,

суть в том я запрашиваю текстовой фаил с названием например 111 и сервер мне отправляет пакетом это фаил он выводится в мемо и сохроняется в папке с эти названием, но я сделал не много усложнено все сервера они подключаются между собой грубо говоря полная связь между собой и они также обмениваются данными между собой фаилы и тд, и там такой момент что там все происходит по кругу нагрузка на все сервера они отправляют сразу всем по кругу бесконечно одни и теже фаилы, я указал им если пришол новый пакет то его сохронить и отправить всем чтобы они тоже сохронили его как это можно обйти
Ответить с цитированием
  #2  
Старый 10.04.2018, 18:23
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 615
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Считаете ХЭШ файла. Сообщаете всем по кругу ИмяФайла+ХЭШ. У кого нет такого файла, или ХЭШ имеющегося файла отличен от переданного ХЭШа, то скачиваете этот файл от инициатора.

Ну это как вариант.
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #3  
Старый 10.04.2018, 19:33
Reba Reba вне форума
Прохожий
 
Регистрация: 05.04.2018
Сообщения: 14
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от dr. F.I.N.
Считаете ХЭШ файла. Сообщаете всем по кругу ИмяФайла+ХЭШ. У кого нет такого файла, или ХЭШ имеющегося файла отличен от переданного ХЭШа, то скачиваете этот файл от инициатора.

Ну это как вариант.
я так и делаю я формирую блок хеш это название фаила, они сравнивают есть ли такой или нет, это как бы работает, но суть в другом там бесконечный цикл идет, пришел фаил он сразу отправил всем всем и так каждый клиент и сервер грубо говоря безконечная цепь получается, и идет нагруза сети, ладно там если 5-10 клиентов серверов, а когда больше 100-1000 там путаница бешаная каждую мил секунду приходит даные и их надо обработать а сервер не выдержит на такую обработку как можно это изправить
Ответить с цитированием
  #4  
Старый 10.04.2018, 19:40
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 615
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Продумайте архитектуру и протокол. Зависит от того как и что вы передаете, какие подтверждения получаете и т.д. Если Вы в тупике, начните с того, что у Вас не получается, приведите участок кода.
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #5  
Старый 10.04.2018, 23:19
Reba Reba вне форума
Прохожий
 
Регистрация: 05.04.2018
Сообщения: 14
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от dr. F.I.N.
Продумайте архитектуру и протокол. Зависит от того как и что вы передаете, какие подтверждения получаете и т.д. Если Вы в тупике, начните с того, что у Вас не получается, приведите участок кода.
Кода нет я составляю пока теоретически ТЗ делаю и пока не могу собрать все в кучу
Ответить с цитированием
  #6  
Старый 11.04.2018, 11:11
nixon232 nixon232 вне форума
Активный
 
Регистрация: 26.01.2014
Сообщения: 276
Версия Delphi: delphi xe4
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Reba
я так и делаю я формирую блок хеш это название фаила, они сравнивают есть ли такой или нет, это как бы работает
И в тоже время кода нет? Ну да ладно, не суть.

Как вариант отправляйте не бессконечно по одному файлу, а через опр. время несколько файлов, которые за это время накопились.
Ответить с цитированием
  #7  
Старый 11.04.2018, 12:14
Reba Reba вне форума
Прохожий
 
Регистрация: 05.04.2018
Сообщения: 14
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от nixon232
И в тоже время кода нет? Ну да ладно, не суть.

Как вариант отправляйте не бессконечно по одному файлу, а через опр. время несколько файлов, которые за это время накопились.
Хорошо, смотри грубо говоря 100 серверов и 1000 клиентов сервера для того что бы конектились клинты, как цепочка как блокчеин, я просто не знаю как сделать на сером айпи или пробить нат чтобы все были сервера и клиенты, суть например 100 клиентов онлаин и сделано отправка на втомате грубо говоря серверу поступил фаил, этот фаил отправил всем подключёным и всем остальным серверам, эти сервера и клиенты также отправляют всем клиентам и серверам, и так теоритически проходит бесконечный цикл отправки даных и клиент сервер начинают тупить и загружатся, можно сделать так , когда клиент подключается к сети без разницы какой сервер то он запрашивает данные файла, только не могу продумать как это сделать, так что бы этот фаил отправили не все клиенты и сервера а один клиент или сервер ( надо что бы на автомате без выбора клиента)
Ответить с цитированием
  #8  
Старый 11.04.2018, 12:24
Reba Reba вне форума
Прохожий
 
Регистрация: 05.04.2018
Сообщения: 14
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от nixon232
И в тоже время кода нет? Ну да ладно, не суть.

Как вариант отправляйте не бессконечно по одному файлу, а через опр. время несколько файлов, которые за это время накопились.
или один из вариантов, создать бд в каждом клиент сервере ( и уже туда записывать все хешы и фаилы , например колонка id 1 idBlock fail size и делать запрос в сеть например у меня база с последним id 356 отправляю в сеть и спрашиваю есть ли id больше чем 356 если все клиенты и сервера потверждают что есть то они тебе шлют базу уже больше чем 356 например 357 потом сразу кидаешь запрос есть ли id больше 357 и тд, или можно упростить, если есть больше id 356 то отправляют тебе всю базу, но как избежать того( огда ты отправляешь всем запрос тебе всеже высылают все базу и твой клиент путается и загружается, и как еше сделать с бд так например я хочу отправить фаил например в базе есть фаил с id 356 создается у себя в базе новый id 357 и отправляется в сеть как избежать нагрузки и путаницу клиентов и серверов когда они будут записывать даные фаила в бд, и как сделать грамотную проверку, на id есть ли такой id или нет если есть то сообщать сеть что такой id есть
и как сделать проверку замены даных например ктото взломан программу и заменил id 356 в фале пару букв или цифр что бы сеть узнала что на клиенте была замена и не допустить изменения в других клиентах серверах а сделать предупреждение клиенту, и закинуть ему новую базу
Ответить с цитированием
  #9  
Старый 11.04.2018, 13:02
nixon232 nixon232 вне форума
Активный
 
Регистрация: 26.01.2014
Сообщения: 276
Версия Delphi: delphi xe4
Репутация: выкл
По умолчанию

Вы как-то переоцениваете нагрузку на сеть.
Идея с бд излишняя, но если у вас хватает навыков - то вперед. Только зачем хранить много баз и "синхронизировать", их мягко говоря, через одно место, если можно сразу всем смотреть в одну базу? Если кому-то нужно записать: блочим бд на запись, пишем, разблочиваем. Но такой вариант нарушает вашу иерархию. Поэтому в бд не вижу выгоды.

Последний раз редактировалось nixon232, 11.04.2018 в 13:06.
Ответить с цитированием
  #10  
Старый 11.04.2018, 13:27
Reba Reba вне форума
Прохожий
 
Регистрация: 05.04.2018
Сообщения: 14
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от nixon232
Вы как-то переоцениваете нагрузку на сеть.
Идея с бд излишняя, но если у вас хватает навыков - то вперед. Только зачем хранить много баз и "синхронизировать", их мягко говоря, через одно место, если можно сразу всем смотреть в одну базу? Если кому-то нужно записать: блочим бд на запись, пишем, разблочиваем. Но такой вариант нарушает вашу иерархию. Поэтому в бд не вижу выгоды.
тогда в крации я хочу чтобы у всех клиентах хранились данные файлов и чтобы их нельзя было изменить, суть скажу как биткоин все транзакций хранятся у майнеров и клиентах, и за то что хранятся я буду платить им денег не большие, грубо говоря все клиенты это и клиенты и майнеры
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:51.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2018

ВКонтакте   Facebook   Twitter