06/05/09 19:22
acromangelo
Mi ripresento a voi con un nuovo problema che mi ha fatto disperare per 3 giorni consecutivi:
ho un client e un server connessi tra di loro. uno deve inviare all'altro un'immagine e usa questo tipo di invio
e questo tipo di ricezione
Ecco, il codice funziona alla perfezione, ma l'immagine arriva tutta a casaccio, come se i pezzi di immagine arrivassero a caso, e la cosa strana è che non avviene sempre...poche volte invece l'immagine arriva perfettamente. Potreste aiutarmi cercando di capire il motivo di questi errori?
PS: questo tipo di metodo per inviare un file l'ho già usato in un programma di scambio files e li funziona perfettamente sempre.
Grazie in anticipo
ho un client e un server connessi tra di loro. uno deve inviare all'altro un'immagine e usa questo tipo di invio
Dim NextPart as Boolean Private Function InviaImmagine() Dim FileLength As Long, Temp As String, PackageSize As Long, LastData As Boolean FileLength = FileLen(App.path & "\immagine.jpg") NextPart = False Main.wsk.SendData "FILE||0" PackageSize = 2048 LastData = False FF = FreeFile Open App.path & "\immagine.jpg" For Binary Access Read As #FF Temp = "" Do Until EOF(FF) If FileLength - Loc(FF) <= PackageSize Then PackageSize = FileLength - Loc(FF) + 1 LastData = True End If Temp = Space$(PackageSize) Get FF, , Temp Do While NextPart = False DoEvents Loop NextPart = False If LastData = True Then Temp = Mid(Temp, 1, Len(Temp) - 1) End If Main.wsk.SendData "FILE||1||" & Temp Loop Do While NextPart = False DoEvents Loop NextPart = False Close FF Kill App.path & "\immagine.jpg" Main.wsk.SendData "FILE||2" End Function Private Sub wsk_SendComplete() NextPart = True End Sub
e questo tipo di ricezione
Private Sub wsk_DataArrival(ByVal bytesTotal As Long) Dim Incoming as string, Parsed() as string, FF as integer wsk.GetData Incoming animazione = True Parsed = Split(Incoming, "||") If Parsed(0) = "FILE" Then If Parsed(1) = "0" Then FF = FreeFile Open App.Path & "\immagine.jpg" For Binary Access Write As #FF FileBar.Max = Parsed(2) FileBar.Min = 0 FileBar.Value = 0 ElseIf Parsed(1) = "1" Then Put #FF, , Parsed(2) If Not (FileBar.Value + bytesTotal) > FileBar.Max Then FileBar.Value = FileBar.Value + bytesTotal ElseIf Parsed(1) = "2" Then Close #FF picImmagine.Picture = LoadPicture(App.Path & "\immagine.jpg") Kill App.Path & "\immagine.jpg" FileBar.Value = 0 End If End If End Sub
Ecco, il codice funziona alla perfezione, ma l'immagine arriva tutta a casaccio, come se i pezzi di immagine arrivassero a caso, e la cosa strana è che non avviene sempre...poche volte invece l'immagine arriva perfettamente. Potreste aiutarmi cercando di capire il motivo di questi errori?
PS: questo tipo di metodo per inviare un file l'ho già usato in un programma di scambio files e li funziona perfettamente sempre.
Grazie in anticipo
Ultima modifica effettuata da acromangelo 06/05/09 19:26
aaa