Oppure

Loading
28/02/10 18:26
coreyt
salve a tutto il forum, da qualche giorno sto provando a creare un programma in grado di connettermi ad un altro mio computer per inviare piccoli file (per ora) e ho scritto questo codice:

Client:
Private Sub cmdfile_Click()
Dim file As Byte
percorso = txtfile.Text
Open percorso For Binary As 1
While Not EOF(1)
Get 1, , file
wsk.SendData file
DoEvents
Wend
Close #1
MsgBox "inviato"
End Sub
con questo codice, cliccando sul cmdfile, apre in binario il file .txt contenuto nella variabile percorso e lo invia tramite il socket, una volta terminato l'invio chiude il file.

Server:
Dim aperto As Boolean
Private Sub Form_Load()
aperto = False
End Sub
Private Sub wsk_DataArrival(ByVal bytesTotal As Long)
Dim file As Byte
If aperto = False Then
Open "C:\prova.txt" For Binary As 1
aperto = True
End If
wsk.GetData file
Put #1, , file
End Sub
con questo codice invece prima controllo se il file è già aperto e poi ricevo il .txt binario.
il problema che ho è che quando vado ad aprire prova.txt il file presenta una linea con degli spazi abbastanza lunga e non il contenuto scritto nel .txt inviato dal client, sapete dirmi dove è l'errore? grazie in anticipo
aaa
28/02/10 18:38
Il file ricevuto deve essere chiuso alla fine della ricezione.

In ogni caso, sull'invio di file tramite winsock ci sono molte discussioni sull'argomento che ti consiglio di leggere ...
28/02/10 20:47
coreyt
ho già cercato sul forum e infatti per il codice mi sono ispirato a questo (quello nel secondo post):
pierotofy.it/pages/extras/forum/6/30989-winsock_trasferire_file/

cmq ho corretto il codice in questo modo, però il problema non sono riuscito a risolverlo:

Client:
Private Sub cmdfile_Click()
Dim file As Byte
Dim chiudi As String
percorso = txtfile.Text
chiudi = "chiudi"
Open percorso For Binary As 1
While Not EOF(1)
Get 1, , file
wsk.SendData file
DoEvents
Wend
Close #1
MsgBox "inviato"
wsk.SendData chiudi
End Sub

Server:
Dim aperto As Boolean
Private Sub Form_Load()
aperto = False
End Sub
Private Sub wsk_DataArrival(ByVal bytesTotal As Long)
Dim file As Byte
Dim comando as String
wsk.GetData comando
Select Case comando
Case "chiudi"
Close #1
Case else
If aperto = False Then
Open "C:\prova.txt" For Binary As 1
aperto = True
End If
wsk.GetData file
Put #1, , file
End Select
End Sub

puoi dirmi cosa sbaglio? penso che l'errore sia dal lato server però non so dove e non ne sono neanche sicuro
aaa
01/03/10 15:18
GrG
quando ti viene dato un errore specifica che tipo di errore e che messaggio contiene... comunque se esamini il codice del lato server vedrai che "wsk.GetData comando" quindi i byte che arrivano vengono memorizzati nella variabile comando (che tra l'altro è stringa) e invece poi (sempre nel server) scrivi nel file inserendo il contenuto della variabile file che però è vuota, dato che il contenuto sta in comando...
aaa