begin process at 2008 07 05 15:00:42
1 205 204 membres
180 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Envoyer un fichier de plus de 8Ko dans un NetworkStream... [ Archives Visual Basic / Réseau et Internet ] (Totoroyamada)

Envoyer un fichier de plus de 8Ko dans un NetworkStream... le 14/06/2005 12:01:51

Totoroyamada
Bonjour, j'ai récupéré sur le net (je ne sais malheureusement plus où) un code pour envoyer des fichiers par réseau, seulement je suis confronté à un petit problème (mais gros pour moi), à savoir la taille des paquets TCP... Du coup quand j'envoie un fichier, quand il arrive il ne fait plus que 8Ko... et évidemment n'est plus valide...
Ci-joint le code, il faut juste une Form1 et 2 boutons bAttendre et bEnvoyer, ainsi qu'un fichier à envoyer ("C:\Mes Documents\vb1\Test\video.mov" dans mon exemple). Il est configuré pour marcher en local.
Imports System.Net.Sockets
Imports System.Net
Imports System.Text
Imports System.IO

    
Const portNo As Integer = 500
    Dim localAdd As System.Net.IPAddress = _
        IPAddress.Parse("127.0.0.1")
    'On attend de 127.0.0.1

    Dim listener As New TcpListener(localAdd, portNo)

    Private Sub bAttendre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bAttendre.Click
        Me.Cursor = Cursors.WaitCursor
        Attendre()
        Me.Cursor = Cursors.Default
    End Sub

    Private Sub bEnvoyer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bEnvoyer.Click
        Me.Cursor = Cursors.WaitCursor
        Envoyer()
        Me.Cursor = Cursors.Default
    End Sub

    Private Sub Attendre()

        listener.Start()
        Console.WriteLine("Listening...")
        Label1.Text = "En attente..."

        Dim tcpClient As TcpClient = listener.AcceptTcpClient()
        Dim NWStream As NetworkStream = tcpClient.GetStream
        Dim bytesToRead(tcpClient.ReceiveBufferSize) As Byte

        '---read incoming stream
        Dim numBytesRead As Integer = NWStream.Read(bytesToRead, 0, CInt(tcpClient.ReceiveBufferSize))

        '---write the bytes to file
        Const FILE_NAME = "C:\Mes Documents\vb1\Test\newvideo.mov"
        Dim fs As System.IO.FileStream
        fs = New FileStream(FILE_NAME, FileMode.CreateNew, FileAccess.Write)
        fs.Write(bytesToRead, 0, numBytesRead)

        fs.Close()

        Label1.Text = "Fichier reçu!"

        tcpClient.Close()
        listener.Stop()

    End Sub

    Private Sub Envoyer()
        Const portNo = 500
        Const FILE_NAME = "C:\Mes Documents\vb1\Test\video.mov"
        Label1.Text = "Envoi en cours..."
        Dim tcpClient As New System.Net.Sockets.TcpClient
        'On envoie à 127.0.0.1
        tcpClient.Connect("127.0.0.1", portNo)

        Dim NWStream As NetworkStream = tcpClient.GetStream
        Dim bytesToSend(tcpClient.ReceiveBufferSize) As Byte

        Dim fs As FileStream
        fs = New FileStream(FILE_NAME, FileMode.Open, FileAccess.Read)

        Dim numBytesRead As Integer = fs.Read(bytesToSend, 0, bytesToSend.Length)
        fs.Close()

        '---send the text
        NWStream.Write(bytesToSend, 0, numBytesRead)

        Label1.Text = "Envoi effectué!"

        tcpClient.Close()
    End Sub

Bref, si quelqu'un pouvait m'expliquer comment séparer les paquets et les joindre à l'arrivée, je lui en serai éternellement reconnaissant...


Re : Envoyer un fichier de plus de 8Ko dans un NetworkStream... le 14/06/2005 17:28:09

Totoroyamada
Bon j'ai à demi résolu mon problème, à savoir que je fixe moi-même
tcpClient.ReceiveBufferSize
Alors pour un petit fichier (2Mo), ça passe, par contre pour du gros non... j'ai donc toujours besoin de diviser tout ça.
Je me suis inspiré de la source "Splitteur de fichier" pour essayer de séparer ça en petit paquets que j'enverrai successivement, mais j'ai un problème au niveau de la réception...
Donc je suis toujours en attente d'une main secourable!


Re : Envoyer un fichier de plus de 8Ko dans un NetworkStream... le 26/08/2006 23:40:14

teo770
Des avancées avec ce problème ?

En faite, je pense qu'il y a une limite aux buffersize, non ?

Merci


Classé sous : fichier, system, fs, envoyer, tcpclient

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS