Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Programma invio file
Forum - Visual Basic 6 - Programma invio file

Avatar
c.ronaldo (Normal User)
Expert


Messaggi: 577
Iscritto: 01/02/2007

Segnala al moderatore
Postato alle 13:25
Giovedì, 01/03/2007
Salve a tutti...
Stò progettando un'applicazione che mi permetta di inviare file...ma non và...non accade nulla dopo l'accettazione del file...
Vi posto il codice :
Server
Private Sub Form_Load()
Label1.Caption = "Il tuo IP è : " & wsk.LocalIP
If wsk.State <> sckClosed Then wsk.Close
wsk.LocalPort = 4500
wsk.Listen
End Sub
Private Sub wsk_Connect()
Form1.Caption = "Connesso"
End Sub
Private Sub wsk_Dataarrival(ByVal bytestotal As Long)
On Error Resume Next
Dim dimensione
Dim dati As String
wsk.GetData dati
If Left(dati, 4) = "File" Then
dimensione = Mid(dati, 5)
If MsgBox("Il client vuole madarti un file di " & dimensione & vbCrLf & "Desideri accettarlo?", vbYesNo + vbQuestion, "Arrivo richiesta") = no Then
wsk.SendData "NO"
MsgBox "File rifiutato!", vbOKOnly + vbExclamation, "Rifiuto"
Close file
Exit Sub
Else
If inv.State <> sckClosed Then inv.Close
inv.LocalPort = 30
inv.Listen
End If
If Left(dati, 2) = "SI" Then
If inv.State <> sckClosed Then inv.Close
inv.Connect wsk.RemoteHostIP, Mid(dati, 3)
End If
If dati = "FN" Then
MsgBox "Trasferimento completato!", vbOKOnly + vbInformation, "Finito"
Close file
If dati = "CH" Then
Text3.Text = Text3.Text & vbCrLf & "[Client] - " & Mid(dati, 3)
End If
End If
End If
End Sub
Private Sub inv_DataArrival(ByVal bytestotal As Long)
Dim file, dati
inv.GetData dati
Cd.ShowSave
Open Cd.FileName For Binary As file
Do While Not EOF(file)
Put file, , dati
Label3.Caption = LOF(file) & " bytes ricevuti su " & dimenisone
Loop
End Sub
Private Sub wsk_Connectionrequest(ByVal requestid As Long)
wsk.Close
wsk.Accept requestid
End Sub
Private Sub inv_Connectionrequest(ByVal requestid As Long)
inv.Close
inv.Accept requestid
End Sub

Client
Dim dimensione As Long
Dim FILE

Private Sub Command1_Click()
If wsk.State <> sckClosed Then
wsk.Close
wsk.LocalPort = 0
End If
wsk.Connect Text1.Text, 4500
End Sub

Private Sub Command2_Click()
Cd.ShowOpen
Text2.Text = Cd.FileName
dimensione = FileLen(Text2.Text)
Label1.Caption = "Inviati 0 byte su " & dimensione
End Sub

Private Sub Command3_Click()
If Dir(Text2.Text) = "" Then
MsgBox "Il file non esiste !", vbOKOnly + vbExclamation, "File inesistente!"
Label1.Caption = "Inviati 0 byte su 0"
Exit Sub
End If
If wsk.State <> sckConnected Then
MsgBox "Non sei connesso!", vbOKOnly + vbExclamation, "Errore invio"
Exit Sub
End If
wsk.SendData "File" & dimensione
End Sub
Private Sub wsk_Dataarrival(ByVal bytestotal As Long)
On Error Resume Next
Dim dati As String
wsk.GetData dati
If dati = "NO" Then
MsgBox "Il server ha rifiutato il file!", vbOKOnly + vbCritical, "File rifiutato"
Close FILE
Exit Sub
End If
If Left(dati, 2) = "SI" Then
If inv.State <> sckClosed Then inv.Close
inv.Connect wsk.RemoteHostIP, 30
End If
If dati = "FN" Then
MsgBox "Trasferimento completato!", vbOKOnly + vbInformation, "Finito"
Close FILE
If dati = "CH" Then
Text3.Text = Text3.Text & vbCrLf & "[Server] - " & Mid(dati, 3)
End If
End If
End Sub
Private Sub wsk_Connect()
Form1.Caption = "Connesso"
End Sub
Private Sub inv_Connect()
Dim dato
Form1.Caption = "In trasferimento(0 %)Completato"
Label1.Caption = "Inviati 0 byte su " & dimensione
Pb.Value = 0
Text1.Enabled = False
Text2.Enabled = False
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Open Text2.Text For Binary As FILE
Do While Not EOF(FILE)
Get FILE, , dato
Label1.Caption = "Inviati " & LOF(FILE) & " su " & dimensione
Pb.Value = (LOF(FILE) * 100) / dimensione
Form1.Caption = "In trasferimento (" & Pb.Value & " % Completato)"
Loop
End Sub
Grazie anticipatamente :k:

PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 14:25
Giovedì, 01/03/2007
1) non invii mai "SI", fai solo un left.. non so che cosa 0 "si" nel server.
2)non invii mai il file lo apri e basta.

PM Quote
Avatar
c.ronaldo (Normal User)
Expert


Messaggi: 577
Iscritto: 01/02/2007

Segnala al moderatore
Postato alle 14:38
Giovedì, 01/03/2007
Cioè...
un errore l'ho trovato ma nn funziona cmq!
E poi una parte dell'applicazione non è ancora finita
EDIT : Mi dà un errore al client quando c'è open text2.text ...
Dice + o - "Bad file or number invalid"...
Non ricordo bene !

Ultima modifica effettuata da c.ronaldo il 01/03/2007 alle 14:46
PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 15:33
Giovedì, 01/03/2007
due cose.
1 verifica che il file esista (col dir)
2 è #FILE non FILE
EDIT 3 cose
3 anche close è #FILE

Ultima modifica effettuata da P4p3r0g4 il 01/03/2007 alle 15:34
PM Quote
Avatar
c.ronaldo (Normal User)
Expert


Messaggi: 577
Iscritto: 01/02/2007

Segnala al moderatore
Postato alle 17:41
Giovedì, 01/03/2007
Niente...Sempre stesso errore! :d
Allora:
Che il file esista è sicuro,visto che uso un common dialog control;ho provato con #file ma stessa cosa!
Bò...
Non sò + dove sbattere la testa!

PM Quote
Avatar
Hacker (Member)
Guru


Messaggi: 1014
Iscritto: 06/06/2006

Segnala al moderatore
Postato alle 19:10
Giovedì, 01/03/2007
su che riga ti da l'errore o almeno in quale evento di quale applicazione?

PM Quote
Avatar
c.ronaldo (Normal User)
Expert


Messaggi: 577
Iscritto: 01/02/2007

Segnala al moderatore
Postato alle 7:43
Venerdì, 02/03/2007
Se guardi bene l'avevo scritto  già e cmq al client
alla riga :
Open file for binary as ...

PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 17:21
Venerdì, 02/03/2007
gli errori che puyò fare un'open sono 3
Open file For Binary As #1
percorso sbagliato. directory o file inestistenti, errori di grammatica nel nome del file ecc..

file privato quindi inapribile (come il sam)+

numero di file già aperto o scorretto.
controllali tutti e tre.

PM Quote