2009-12-29 4 views
2

Мне нужно передать текстовые файлы, расположенные в одном месте с одного компьютера на другой, через .NET на каждую секунду. Позже мне снова требуется передача обратно. Пожалуйста, помогите мне, как пройти через C#. NETMachine to Machine Передача файлов

+0

Передача файла один раз в секунду, как долго? Для чего. Это может быть довольно сложно, если файлы большие. Что вы уже пробовали? – GrayWizardx

+0

Являются ли машины одинаковыми или разными? – A9S6

ответ

1

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

1

Если у вас есть FTP-сервер на каждом компьютере, вы можете использовать C# FTP Client Library.

Возможно, вы также захотите рассмотреть один из P2P libraries (FTP-сервер не требуется).

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

+0

Как с FTP? – venkat

+0

Для каждого компьютера требуется FTP-сервер. Затем вы добавляете код из клиентской библиотеки FTP C# (см. Ссылку в моем ответе) в свою собственную программу. Это дает вам класс, который вы можете использовать для открытия FTP-соединения с удаленной машиной и копирования файлов. Существует демонстрационный код вместе с клиентской библиотекой, который показывает, как это сделать. –

2

Если машины находятся в одной сети, вы также можете попробовать работать с сетевыми ресурсами. Затем вы можете использовать \\machine\folder в качестве папки назначения для ваших файлов, используя обычный метод File.Copy.

2

Чтобы перенести файл с машины A на машину B, вы можете использовать метод Copy. Предполагая, что вы права администратора на машине B, вы можете использовать следующий код, чтобы скопировать файл каждый второй из машины А на машине B:

ThreadPool.RegisterWaitForSingleObject(
    new ManualResetEvent(false), 
    (state, timedOut) => 
    { 
     // TODO: error handling 
     File.Copy("c:\someFile.txt", "\\machineB\c$\someFile.txt", true); 
    }, 
    null, 
    TimeSpan.FromSeconds(1), 
    false); 

Если вы не имеете права администратора на машине B можно использовать акции:

File.Copy("c:\someFile.txt", "\\machineB\someShare\someFile.txt", true);