Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2007, 11:50   #1
Briz
Пользователь
 
Аватар для Briz
 
Регистрация: 07.10.2007
Сообщений: 37
По умолчанию Копирование по сети

Я админ в компьютерном клубе и у меня 40 машин. На каждом компе есть папка gemes к ней открыт полный доступ. Я постоянно обновляю игры и помогите сделать такую программу которая копировала из папки на сервере:
\\server\games\ в папки \-01-\games по \\-40-\games
т.е. сразу на все компы.
помогите устал уже в ручную копировать....
Хочу все знать!
Briz вне форума Ответить с цитированием
Старый 17.10.2007, 12:34   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

В идеале нужно сделать таблицу, в которой прописать имена всех компов в сети. Далее, написать маленькую функцию, которая проверяет находится ли комп в сети.
Например так
Код:
uses WinSock, ActiveX;

function CheckDomain(Domain: string): Boolean;
var
   Error: DWORD;
   HostEntry: PHostEnt;
   Data: WSAData;
begin
   Result := False;
   Error := WSAStartup(MakeWord(1, 1), Data);
   if Error = 0 then
   begin
      HostEntry := gethostbyname(PChar(Domain));
      Result := GetLastError = 0;
   end;
   WSACleanup();
end;
и далее если комп в сети
Код:
function FullDirectoryCopy(SourceDir, TargetDir: string; StopIfNotAllCopied,
  OverWriteFiles: Boolean): Boolean;
var
  SR: TSearchRec;
  I: Integer;
begin
  Result := False;
  SourceDir := IncludeTrailingBackslash(SourceDir);
  TargetDir := IncludeTrailingBackslash(TargetDir);
  if not DirectoryExists(SourceDir) then
    Exit;
  if not ForceDirectories(TargetDir) then
    Exit;

  I := FindFirst(SourceDir + '*', faAnyFile, SR);
  try
    while I = 0 do
    begin
      if (SR.Name <> '') and (SR.Name <> '.') and (SR.Name <> '..') then
      begin
        if SR.Attr = faDirectory then
          Result := FullDirectoryCopy(SourceDir + SR.Name, TargetDir + SR.NAME,
            StopIfNotAllCopied, OverWriteFiles)
        else if not (not OverWriteFiles and FileExists(TargetDir + SR.Name))
          then
          Result := CopyFile(Pchar(SourceDir + SR.Name), Pchar(TargetDir +
            SR.Name), False)
        else
          Result := True;
        if not Result and StopIfNotAllCopied then
          exit;
      end;
      I := FindNext(SR);
    end;
  finally
    SysUtils.FindClose(SR);
  end;
end;
// копируем на все активные компы циклично по твоей таблице (например, в ней поле с именами компов называется CompName)
Код:
Table.First;
While not Table.eof do
begin
if CheckDomain(TableCompName.value) = true then
FullDirectoryCopy('\\server\games\', '\\klient\games\');
Table.next;
end;
Ну, с именами каталогов разберёшься...
А еще лучше использовать какой-нибудь компонент, который умеет перезаписывать только более новые файлы,... чтобы не перезаписывать тот же файл и не "забивать" трафик впустую...

Последний раз редактировалось _SERGEYX_; 17.10.2007 в 12:37.
_SERGEYX_ вне форума Ответить с цитированием
Старый 17.10.2007, 12:40   #3
Briz
Пользователь
 
Аватар для Briz
 
Регистрация: 07.10.2007
Сообщений: 37
По умолчанию

а можешь готовую сделать а то я новичок и еще не счем не разобрался.
briz-2006@mail.ru

Пожалуйста...
Хочу все знать!
Briz вне форума Ответить с цитированием
Старый 17.10.2007, 14:27   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Ок, переношу в фриланс
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 19.10.2007, 19:23   #5
konkurent
Пользователь
 
Регистрация: 10.04.2007
Сообщений: 51
По умолчанию

... можна добавить ещё такие приятные вещи как многопоточность копирования, и если уж на то пошло то для одноранговой сети таблица с именами компов необязательна, проверять на лету при старте программы.
также можна сделать клиента который будет расшаривать нужные ресурсы по запросу сервер-приложения(ну это рентабельно только в том случае если писать действительно что-то глобальное где бы велась и статистика(что когода и сколько), управление процесами ну и т.д., т.е. максимально приближено до полного управления удалённого компа)....
когда то в своё время что-то делал для комп(игро)-клуба...если нада поищу исходники.
e-mail=konkurent@gala.net
isq=498425545
konkurent вне форума Ответить с цитированием
Старый 19.10.2007, 20:27   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А вот я бы предложил другой вариант.
Установить на каждый клиентский комп небольшую программулину, пусть работает скрытно, в фоне, и периодически проверяет наличие обновлений на сервере и подкачивает при необходимости.
Ведь любая программа, которой нужны обновления (из тех прог, которые мы с вам у себя используем), именно так и делает...
А опрашивать с помощью сервера... Сервер - это слуга... И "неча ему со свиным рылом да в калашный ряд"...
mihali4 вне форума Ответить с цитированием
Старый 19.10.2007, 20:49   #7
konkurent
Пользователь
 
Регистрация: 10.04.2007
Сообщений: 51
По умолчанию

смысла не вижу...
представь себе сидишь ты за компом бегаешь в какуюто игрушку по сети и тут начинает "програмулина" лезть свинным рылом на сервер и копировать эдак 1г...сеть явно поддтормаживает...ты начинаешь ругать кого? ясно админа.. админ смотрит... ага сеть в напряге ... виноват кто? кто делал..
а так админ видит какой занят комп какой свободен и сколько он будет свободен!!!!.... а для Полного автоматизированого контроля это нада делать серьёзную вЭщь.
e-mail=konkurent@gala.net
isq=498425545
konkurent вне форума Ответить с цитированием
Старый 19.10.2007, 21:14   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
Смех

Цитата:
Сообщение от konkurent Посмотреть сообщение
смысла не вижу...
представь себе сидишь ты за компом бегаешь в какуюто игрушку по сети и тут начинает "програмулина" лезть свинным рылом на сервер и копировать эдак 1г...сеть явно поддтормаживает...ты начинаешь ругать кого? ясно админа.. админ смотрит... ага сеть в напряге ... виноват кто? кто делал..
а так админ видит какой занят комп какой свободен и сколько он будет свободен!!!!.... а для Полного автоматизированого контроля это нада делать серьёзную вЭщь.
А что, определить, когда система простаивает, так сложно?
Сеть в напряге??? А когда сервак сам будет сливать на какой-то свободный комп новую игруху, она мимо сетки пойдет, по воздуху???
Какая разница?
"а так админ видит какой занят комп какой свободен"
А вопрос о контроле вообще не стоит - человеку нужно "чтобы само копировалось", не вручную.

Последний раз редактировалось mihali4; 19.10.2007 в 21:16.
mihali4 вне форума Ответить с цитированием
Старый 19.10.2007, 21:42   #9
konkurent
Пользователь
 
Регистрация: 10.04.2007
Сообщений: 51
По умолчанию

:-)
контроль должен присутсвовать всегда.
вы сами то админили локалку? (не важно где)
сталкивались с озверевшими детьми :-)))?
Цитата:
А что, определить, когда система простаивает, так сложно?
а сколько она простоит ещё? как определить програмно?
Цитата:
.......по воздуху???
мимо сетки не пройдёт :-) но хотябы память жрать не будет сам процес.
а програмка нужна чтоб покурить когда идёт копирование :-), а не розбираться в конце смены где скопировано а где нет.
Повторюсь...
Цитата:
а для Полного автоматизированого контроля это нада делать серьёзную вЭщь.
e-mail=konkurent@gala.net
isq=498425545
konkurent вне форума Ответить с цитированием
Старый 15.12.2009, 20:40   #10
Darsella
Новичок
Джуниор
 
Регистрация: 15.12.2009
Сообщений: 0
По умолчанию

у меня похожая проблема!
есть несколько компьютеров. нужен код который будет копировать со всех этих машин, на которых в определенной папке с определенным именем лежит файл файл, на мой компьютер.
только вот нужны ещё проверки IP, тоесть будет считывать адреса всех машин и не зависать в случае если например одна из машин не в сети или такой файл на ней не существует.
Модератор: раздел Фриланс - для заказов, а не для того, чтобы делится своими проблемами
Darsella вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование ryton SQL, базы данных 2 30.06.2008 09:32
Копирование баз Access Washington Общие вопросы Delphi 6 27.06.2007 08:39
Как скопировать папку со всем ее содержимым Arsgun Общие вопросы Delphi 2 09.06.2007 22:07