Oppure

Loading
13/06/08 9:02
GrG
Sorry8-|

Postato originariamente da gantonio:
[...]
Dal lato della ricezione NON è necessario usare la LOF in quanto il numero di byte ricevuti li metti in una variabile e controlli QUELLA variabile.

Ma e' cosi' difficile ragazzi?


La variabile dove la metti? Nel lato della ricezione?
aaa
13/06/08 9:07
gantonio
Postato originariamente da GrG:

La variabile dove la metti? Nel lato della ricezione?


Ovviamente ... all'inizio in ricezione, quando fai la open, la variabile e' a 0 ... man mano che ricevi byte e li scrivi nel file, li aggiungi nella variabile e controlli il suo valore fino a quando non arriva al valore della lunghezza (questo se controlli la lunghezza)

Oppure attendi che arrivi la frase di terminazione (###FINE###) e non usi la variabile ...
aaa
13/06/08 13:05
GrG
Ma alllora, Non va bene come dicevo prima?
Postato originariamente da GrG:
LOF lo dovresti usare nel programma che RICEVE il FILE...Per vedere se la grandezza del file ha raggiunto la grandezza che il programma che MANDA il file gli aveva mandato all'inizio...


Io intendevo(prendendo in considerazione lo schema ab):
a = CLIENT
b = SERVER

a: Chiede a b se gli trasmette un file
b: Gli risponde dicendogli la grandezza del file
a: Si salva la grandezza in una variabile
b:Gli manda i pacchetti contenenti i pezzi del codice del file
a: Li riceve e li aggiunge al file che si sta formando

E a con LOF vede la grandezza del file creato e la mette a confronto con la variabile iniziale. Se il file è più piccolo continua il trasferimento altrimenti chiude la connessione.
aaa
13/06/08 14:12
gantonio
Va tutto bene tranne l'ultima parte.

Il client esegue la LOF una sola volta.

Non c'e' bisogno di eseguirla tante volte nel ciclo. Dal valore della LOF ottiene il numero di volte che deve essere eseguito il ciclo e il numero di byte da inviare come resto.

L'ho scritto anche sopra piu' volte mostrando il codice ... rileggi il mio messaggio ...
aaa
13/06/08 18:12
GrG
OK ;)
aaa
16/06/08 11:12
GrG
Postato originariamente da GrG:
[...]
Il codice del server che manda i pezzi di file al Client è:

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim data As String
Dim P As Integer
On Error GoTo ErrorProgr
Winsock1.GetData data
Path(P) = "PERCORSO"
Dim SentData As String
Dim conteggio As Long
If var = True Then
Open Path(P) For Binary As #2
DoEvents
SentData = Space(1000)
For conteggio = 0 To CLng(LOF(2) / 1000)
Get #2, conteggio * CLng(1000) + 1, SentData
Winsock2.SendData SentData
DoEvents
Next conteggio
var = False
DoEvents
Close #2
Winsock2.SendData "Fine150A"
MsgBox "Trasferimento Completato!"
End If
'---------------------
End If
Loop Until EOF(1) = True
Close #1
End If
ErrorProgr:
If Err.Description = "" Then
Else
MsgBox "Errore: " & Err.Description
End If
End Sub


Se non lo capisci te lo spiego...Cmq alla fine il file ricevuto è più grande del file di origine


Scusate se ho ripreso questo vecchio post ma mi sono accorto che nel codice avevo messo un pezzo di un'altro codice x sbaglio, il codice giusto rispetto a quello sopra è:


Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim data As String
Dim P As Integer
On Error GoTo ErrorProgr
Winsock1.GetData data
Path(P) = "PERCORSO"
Dim SentData As String
Dim conteggio As Long
If var = True Then
Open Path(P) For Binary As #2
DoEvents
SentData = Space(1000)
For conteggio = 0 To CLng(LOF(2) / 1000)
Get #2, conteggio * CLng(1000) + 1, SentData
Winsock2.SendData SentData
DoEvents
Next conteggio
var = False
DoEvents
Close #2
Winsock2.SendData "Fine150A"
MsgBox "Trasferimento Completato!"
End If
End Sub

aaa