fdiedler http://www.tutoworld.com | Donc j'ai changer de methode, la je les envoie par parquets de 4096 ( ca reglera la probleme de la taille du buffer ):
Serveur :
Code :
- Public Function ChargeFichier(ByVal fichier As String)
- Dim temp As String
- Dim BlockSize As Integer
- FileOpen(1, fichier, OpenMode.Binary, OpenAccess.Read)
- BlockSize = 4096
- Do While Not EOF(1)
- temp = Space(BlockSize)
- FileGet(1, temp)
- socket.Send(temp)
- System.Windows.Forms.Application.DoEvents()
- Loop
- socket.Send("end" )
- FileClose(1)
- End Function
|
Client :
Code :
- Public Sub Receivedata(ByRef temp As String, ByRef FileNametoSave As String)
- If CheckFileAva = False Then
- FileOpen(2, FileNametoSave, OpenMode.Binary, OpenAccess.Write)
- CheckFileAva = True
- ElseIf CheckFileAva = True Then
- System.Windows.Forms.Application.DoEvents()
- End If
- If temp = "end" Then
- FileClose(2)
- CheckFileAva = False
- MsgBox("Transfer Success", , "File Transfert" )
- Else
- FilePut(2, temp)
- End If
- End Sub
|
Et pour l'appeller :
Code :
- bytesRead = sckclient.EndReceive(asyncResult)
- Dim mesreceive As String = Encoding.UTF8.GetString(bufferread)
- Call envoie.Receivedata(mesreceive, ("C:\florent.jpg" ))
|
Mais voila du coté serveur, ca a l'air de bien fonctionner : il envoit effectivement par paquets de 4096 et une fois arrivé a la fin du fichier il envoie "end". Mais du coté client, il recoit pas tout les données... si je met un point d'arret et bah il recoit les 4096 premieres et apres il recoit plus rien ( temp = nothing )... Je comprends pas pourquoi???? Peut etre qu'il faut faire une boucle aussi de l'autre coté mais si c'est ca je ne sais aps comment faire ???
Merci Message édité par fdiedler le 09-04-2005 à 08:53:45
|