IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Envoie Fichier par socket


Sujet :

C#

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Envoie Fichier par socket
    Bonjour, je mets en place un programme permettant l'envoie d'un fichier à traver le reseau (TCP). J'utiliser tcpclient...
    Pour le moment, je tester l'envoie sur des fichiers pdf de 5mo environ. Par la suite, l'application devra gérer tout type de fichier...
    Le fichier est situé sur le client, on l'envoie sur le serveur.
    Je vous met une capture de code concernant la reception du fichier coté serveur. Aprés test, je reçois bien mon pdf, mais (y'en a tjrs un lol), celui est rajouté de quelques octects en plus...mais j'arrive à l'ouvrir et le consulter...
    PDF Original: 4.76Mo
    PDF Envoyé: 5Mo...

    J'envoie par paquet de 1 mo...
    J'ai bien reussi à faire l'envoi octet par octet, mais cela prends trop de temps...

    Bref je ne comprends pourquoi le fichier copié est rajouté de quelques octets en plus...

    Je débute en C#, je demande votre négligence
    Merci à ceux qui m'aideront.


    Code coté Serveur (reception du fichier)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     class Program {
            static readonly ushort port = 50000;
            static void Main(string[] args) {
     
                IPAddress ipAddress = new IPAddress(new byte[] { 127, 0, 0, 1 });
                TcpListener tcpL = new TcpListener(ipAddress, port);
                tcpL.Start();
     
                Console.WriteLine("Attente de connexion client");
                TcpClient tcpC = tcpL.AcceptTcpClient();
                Console.WriteLine("Client connecté");
                NetworkStream network = tcpC.GetStream();
                BinaryReader lecture = new BinaryReader(network);
                FileStream fileSend = new FileStream("C:\\temp\\" + "file" + ".pdf", FileMode.Create, FileAccess.Write, FileShare.None, 10000, true);
                BinaryWriter ecriture = new BinaryWriter(fileSend);
                int packet = 1048576;
                tcpC.ReceiveBufferSize = packet;
                bool End=false;
                int nByteRead=0;
                byte[] block = new byte[packet];
     
               //Je recois les données que j'ecris dans le fichier...
     
                while ((nByteRead = lecture.Read(block, 0, packet)) > 0) {
                    ecriture.Write(block, 0, packet);
                }
                network .Close();
                ecriture.Close();
                lecture.Close();
                Console.WriteLine("Client deconnectée");
            }
        }
    }

    Code coté Client (Envoie du fichier)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    class ProgClient {
            static readonly string host = "localhost";
            static readonly ushort port = 50000;
     
            public void Envoie(String source) {
     
                int packet = 1048576;
                TcpClient tcpC = new TcpClient(host, port);
                NetworkStream net = tcpC.GetStream();
                tcpC.SendBufferSize = packet;
                BinaryWriter ecriture = new BinaryWriter(net);
                FileStream fileToSend = new FileStream(source, FileMode.Open, FileAccess.Read, FileShare.Read);
                BinaryReader lecture = new BinaryReader(fileToSend);
                long TailleFichier = fileToSend.Length;
                int refer = 0;
     
                while (refer<TailleFichier) {
                    byte[] block = new byte[packet];
                    int nbLu = lecture.Read(block, 0, packet);
                    ecriture.Write(block, 0, packet);
                    refer += nbLu;
                }
     
                net.Close();
                ecriture.Close();
                lecture.Close();
            }
        }
    Dernière modification par Invité ; 26/02/2008 à 17h56. Motif: Ajout du code côté client

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoi de fichier par socket
    Par thebloodyman dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 30/08/2007, 17h07
  2. Envoi de fichier par socket
    Par dr_octopus74 dans le forum Réseau
    Réponses: 42
    Dernier message: 19/01/2007, 17h59
  3. Envoi d'un fichier par socket
    Par Aleksis dans le forum C++
    Réponses: 12
    Dernier message: 12/08/2006, 05h10
  4. Réponses: 3
    Dernier message: 06/03/2006, 10h36
  5. [Débutant] Envoi de fichier par socket
    Par zapho dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 26/05/2004, 18h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo