[c#]serveur pour transférer des fichier (avec TcpListener ?)

serveur pour transférer des fichier (avec TcpListener ?) [c#] - C#/.NET managed - Programmation

Marsh Posté le 04-09-2004 à 02:38:07    

Bonjour,
je galère grave pour trouver comment envoyer en recevoir un fichier grace à TcpListener et Tcpclient. Je débute en c# et cela m'a semblé plus facile que les sockets.
 
Je ne sais pas comment extraire un fichier de mon disque, le mettre dans une variale et l'envoyer à un client qui recomposera tout. Aider moi s'il vous plait !
 
J'ai mis ce que j'ai essayé de coder(grâce à des tuto) pour tester avant de l'intégrer pour mon serveur.
 

Code :
  1. //SERVEUR
  2. TcpListener serveur=new TcpListener(System.Net.IPAddress.Any,5100);
  3. // Démarrage de l'écoute
  4. serveur.Start();
  5. // Connexion d'un client (méthode bloquante)
  6. TcpClient client=serveur.AcceptTcpClient();
  7. NetworkStream stream=client.GetStream();
  8. byte[] buffer=System.Text.Encoding.ASCII.GetBytes("CHAINE2" );
  9. stream.Write(buffer, 0, buffer.Length);
  10. // Fermeture de la connexion
  11. client.Close();
  12. // Arrêt de l'écoute
  13. serveur.Stop();


 

Code :
  1. //CLIENT
  2.   TcpClient client=new TcpClient("127.0.0.1",5100);
  3.   NetworkStream stream=client.GetStream();
  4.   byte[] buffer=new byte[100];
  5.   int nRead=stream.Read(buffer, 0, buffer.Length);
  6.   string chaine=System.Text.Encoding.ASCII.GetString(buffer);
  7.   Console.WriteLine(chaine);
  8.   client.Close();

Reply

Marsh Posté le 04-09-2004 à 02:38:07   

Reply

Marsh Posté le 04-09-2004 à 10:03:36    

ben tu lis la documentation sur comment lire un fichier

Reply

Marsh Posté le 04-09-2004 à 12:45:50    

Oui mais j'ai essayer, j'ai trouvé ca (file1=le fichier à lire, file2=le fichier à écrire):
 

Code :
  1. //partie qui irai bien sur le serveur
  2. // Préparation du flux d'entrée
  3. FileStream inputStream = new FileStream(file1, FileMode.Open);
  4. BinaryReader br = new BinaryReader(inputStream);
  5. long length = inputStream.Length;


 

Code :
  1. //pour le client
  2. // Préparation du flux de sortie
  3. FileStream outputStream = new FileStream(file2, FileMode.Create);
  4. BinaryWriter bw = new BinaryWriter(outputStream);
  5. // Copie des octets du flux d'entrée vers le flux de sortie
  6. for(int i=0; i<length; i++)
  7. {
  8. bw.Write(br.ReadByte());
  9. }


 
Le problème c'est que je n'arrive pas à envoyer "br" par "stream.Write(br, 0, br.Length);" car "br" n'est pas d'un format reconu. Avez vous une idée ?

Reply

Marsh Posté le 06-09-2004 à 13:06:45    

gomoz a écrit :


Le problème c'est que je n'arrive pas à envoyer "br" par "stream.Write(br, 0, br.Length);" car "br" n'est pas d'un format reconu. Avez vous une idée ?


Ton but est d'envoyer des données au client, donc il ne faut pas envoyer l'objet BinaryReader (situé sur le serveur) mais les données lues par celui-ci.
Pour faire simple:
du côté serveur tu créer ton BinaryReader, celui-ci va lire dans un fichier avec br.Read(). Les données lues seront ensuite envoyées au client avec le stream.Write().
Du côté client tu vas faire un stream.Read() et écrire les données lues avec ton BinaryWriter (bw.Write())

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed