Probao sam na način na koji si mi rekao:
Citat:
Povratak iz EndSend ne znaci da su svi podatci iz socketa poslati, vec da poslat odredjeni broj bajtova (i taj broj ti se vraca kao rezultat EndSend()). To uporedis sa velicinom bufera i ako nisu svi bajtovi poslati mozes iz samog callback-a da napravis novi BeginSend koji koristi isti callback, u principu petlju dok god se buffer ne isprazni.
Ali ponasa se na isti način, mani sve ostalo radi besprijekorno... I to nakon mnogo sati testiranja... :D
Ali taj problem ostaje; Sad sam radi testiranja poslao 128 kB fajl. Uzeo sam velicinu tog fajla i usporedio sa EndSend rezultatom. Isti je iz prvog pokusaja, odnosno nakon 1,2 sekunde dode na endSend metodu...
Na stolu imam drugi komp koji se izvodi kao primatelj, i vidim da je file tek poceo da se skida a endSend je odmah vratila duzina fajla...
I opet se isti problem javlja...
Code:
Private Sub sentCallback(ByVal ar As IAsyncResult)
Dim kolicina As Integer = cSocket.EndSend(ar) ' --Callback odmah vrati duzina fajla, ne znam mozda ako bih iskoristio veci fajl mozda bih tek onda vratio nesto manji razultat...
If Not kolicina >= duzinaPodatkaZaSlanje Then
cSocket.BeginSend(cTransferData, 0, cTransferData.Length, SocketFlags.None, New AsyncCallback(AddressOf sentCallback), Nothing) '--Ovaj dio se skoro nikada ne poziva...
End If
processStatus()
End Sub
Nikako nemogu da uspijem da saznam kada je fajl kompletno prenesen.
Da li imaš još kakvu ideju.
Hvala unaprijed!