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...