2009-12-29 5 views
2

Je dois transférer des fichiers texte situés à un emplacement d'une machine vers une autre machine via .NET pour chaque seconde. Plus tard encore, j'ai besoin de transférer vice-versa. S'il vous plaît aidez-moi comment parvenir à C# .NETTransfert de fichier machine à machine

+0

Transfert d'un fichier une fois par seconde pour combien de temps? Dans quel but. Cela peut être assez difficile si les fichiers sont volumineux. Qu'avez-vous déjà essayé? – GrayWizardx

+0

Les machines sont-elles sur un même réseau ou sur un réseau différent? – A9S6

Répondre

1

Vous pouvez également utiliser la classe d'ordinateur et une minuterie pour déplacer le fichier toutes les 1 sec

1

Si vous avez un serveur FTP sur chaque machine, vous pouvez utiliser un C# FTP Client Library.

Vous pouvez également envisager l'un des P2P libraries (aucun serveur FTP requis). Si vous pouvez transférer les fichiers dans le temps disponible dépend de la taille du fichier et de la bande passante plus que les moyens que vous utilisez pour transférer les fichiers, bien que certains protocoles ont plus de frais généraux que d'autres. Dans le cas où les machines sont sur le même réseau, vous pouvez également essayer de travailler avec des partages réseau.

+0

Comment faire avec FTP? – venkat

+0

Vous avez besoin d'un serveur FTP configuré sur chaque machine. Ensuite, vous ajoutez du code de la bibliothèque client FTP C# (voir le lien dans ma réponse) à votre propre programme. Cela vous donne une classe que vous pouvez utiliser pour ouvrir une connexion FTP à l'ordinateur distant et copier des fichiers. Il y a un code de démonstration avec la bibliothèque client qui montre exactement comment le faire. –

2

Ensuite, vous pouvez utiliser \\machine\folder comme dossier de destination pour vos fichiers en utilisant la méthode normale File.Copy.

2

Pour transférer un fichier de la machine A à la machine B, vous pouvez utiliser la méthode Copy. En supposant que vous avez des privilèges d'administrateur sur la machine B vous pouvez utiliser le code suivant pour copier un fichier à chaque seconde de la machine A à la machine 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); 

Si vous ne disposez pas des privilèges d'administrateur sur la machine B vous pouvez utiliser des actions:

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