Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 06:27 22.06.24 
Компютри и Интернет
   >> Delphi
Всички теми Следваща тема *Кратък преглед

Тема Client/Server инсталация  
Авторcoolman (Нерегистриран)
Публикувано18.02.07 00:21



Здравейте,
Тези дни ми се върти една идея в главата и искам да попитам дали някой е правил нещо подобно. Значи, работи се на едно приложение на 3 компютъра в мрежа. Единият от тях е сървър другите станции. На сървъра се подновява версията т.е. EXE-то и още няколко файла, може ли по локалната мрежа да се подновят и останалите 2 компютъра от така наречен сървър? И как може да стане това?
Благодаря.



Тема Програмирането се ограничава от въображението :)нови [re: coolman]  
Автор NikB (любопитен)
Публикувано18.02.07 11:05



Програмирането се ограничава от въображението :)
Може, разбира се.
В конкретния случей, явно едно и също приложение работи като сървър и клиент - ще трябва да организираш обмена така, че след като заредиш новите файлове на клиентите, те да стартират друг процес (приложение), да се затворят, да се сменят изпълнимите файлове и отново да се стартират.



Тема Re: Програмирането се ограничава от въображението :)нови [re: NikB]  
Авторcoolman (Нерегистриран)
Публикувано18.02.07 11:42



Ами да така е, но забравих да спомена, че искам прехвърлянето на файлове да става през TCP не през sharing устройство. Например: Стартира се програмата на станция и той изпраща към сървъра запитване, "има ли нова версия" ако има, прехвърлят се файловете и се подновяват. Може ли и пример?



Тема И през ум не ми мина да ги шерваш :)нови [re: coolman]  
Автор NikB (любопитен)
Публикувано18.02.07 12:43



И през ум не ми мина да ги шерваш :)
Но правлото е сървъра да решава - в смисъл - да пита "твоята версия коя е" и т.н., защото версията на клиента може да не подозира, че с новата версия ще трябва (примерно) да се изпрати още един файл :)
А ако клиент/сървъра ти не е с универсални сокети, а с някаква по-засукана технология (в смисъл, нивото на универсалните сокети да не е достъпно) - може да ти се наложи да си организираш сокет специално за обноваванията. Това не е съществено :)

За теб не е проблем да си организираш файл трансфер по сокетите, нали?

Впрочем, преди година-две, когато на мой клиент/сървър броя на конектите нарастна (WinXP) се оказа, че има гадно ограничение на броя на сокетите, които са в процес на конектване - за щастие, по форумите на Win имаше доста писано по въпроса.



Тема Re: И през ум не ми мина да ги шерваш :)нови [re: NikB]  
Авторcoolman (Нерегистриран)
Публикувано18.02.07 12:57



"За теб не е проблем да си организираш файл трансфер по сокетите, нали? "

Точно, това не знам как става





Тема А клиент/сървър приложението кой го е писал?нови [re: coolman]  
Автор NikB (любопитен)
Публикувано18.02.07 13:27



А клиент/сървър приложението кой го е писал?
Ако не си ти (и не разполагаш със сорсовете) ще трябва да правиш отделно приложение за UpDate.
Разбира се, по аксиомата, че в интернет има всичко, което можеш да си пожелаеш, добре ще е първо да потърсиш нещо готово (така и така ще е отделно приложение).
Ако решиш да пишеш - клиенски сокет, сървърски сокет, връзка, измисляш си твой протокол (с "твои" команди за определяне на текущите версии, за прехвърляне на файлове и т.н.).
3-5 дни работа, ако знаеш сокетите и започнеш проекта от 0.
Ама за 2-3 компютъра - по-добре ползвай VNC, примерно, и ги ъпдейтвай ръчно.



Тема Re: Client/Server инсталациянови [re: coolman]  
Автор Beco_ (Boogie chillun)
Публикувано19.02.07 09:44



Първата ти задача е да сравниш версиите на exe-то на сървъра и кл. компютър. В директория ...\Examples\Controls\VersionInfo има компонент, който трябва да се компилира и инсталира. С негова помощ четеш версиите на exe-тата и ги сравняваш. Ако са различни, стартираш едно др. ехе, което затваря клиентското ехе, тегли новото ехе и го обновява със старото.
Тегленето на новото ехе, може да стане по 2 начина, със стартиран FTP сървър на компа, където е сървъра или по TCP с Indy. Вторият вариант е за предпочитане. Ето как става:
- слагаш TIdTCPServer компонента на сървъра
- Кода в обработка на събитието TIdTCPServer->OnExecute() :


try // C++ code!
{ String strTmp = ExtractFilePath(Application->ExeName) + String("NEW.EXE");
if (!FileExists(strTmp))
throw Exception("Липсва новото ехе на съврърчето");
TFileStream *fs = new TFileStream(strTmp,fmOpenRead|fmShareDenyWrite);
try
{ AThread->Connection->WriteStream(fs,true,true);
}
catch(Exception &e)
{ delete fs;
throw Exception(e.Message);
}
delete fs;


Athread e нишката, която автоматично се създава във ф-ята OnExecute().



Тема Re: Client/Server инсталациянови [re: Beco_]  
Автор Beco_ (Boogie chillun)
Публикувано19.02.07 09:58



От клиентската страна:
- Слагаш TIdTCPClient(CliSock) и TIdAntiFreeze компоненти.
- Проверка, дали версиите на клиента и сървъра се различават. При разлика:


TFileStream *fs = new TFileStream(strNewExe,fmCreate);
try
{ CliSock->Connect();
CliSock->WriteLn("GetNewExe"); // Коментар-1
CliSock->ReadStream(fs,-1,false);
CliSock->Disconnect();
}
catch(Exception &e)
{ delete fs;
throw Exception(e.Message);
}

Коментар-1 - Сървъра трябва да "разбира" прости команди подадени като стрингове, Кодът от страна на сървъра ще изпрати новото ехе, само при получен стринг "GetNewExe". Нещата са опростени заради яснота.



Тема Re: Client/Server инсталациянови [re: Beco_]  
Авторcoolman (Нерегистриран)
Публикувано19.02.07 22:49



Благодаря, много на всички. Остава да го реализирам

, но насоката беше важна




Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.