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 - Problema winsock invio file.
Forum - Visual Basic 6 - Problema winsock invio file.

Avatar
Electronix (Normal User)
Newbie


Messaggi: 5
Iscritto: 15/08/2011

Segnala al moderatore
Postato alle 17:13
Lunedì, 15/08/2011
Ho un problema nel inviare file trammite winsock nel pc della mia lan. Vi posto il codice.

Applicazione nel mio pc.

Private Sub Command1_Click()
Winsock1.Close
Winsock1.LocalPort = Text1.Text
Winsock1.Listen
End Sub
Private Sub Command2_Click()
Winsock1.Close
End Sub
Private Sub Command3_Click()
CommonDialog1.ShowOpen
Text2.Text = CommonDialog1.FileName
End Sub
Private Sub Command4_Click()
Dim file() As Byte
Open Text2.Text For Binary As #1
ReDim file(0 To LOF(1) - 1)
DoEvents
Get #1, , file
Winsock1.SendData file()
Close #1
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
Form1.Caption = "Connesso."
End Sub


Applicazione nel pc della mia lan.


Private Sub Form_Load()
Winsock1.Connect "192.168.#.#", 9000
End Sub
Private Sub Winsock1_Connect()
Form1.Caption = "Connesso."
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim file() As Byte
Winsock1.GetData file
Put #1, , file()
DoEvents
End Sub


Il tutto si collega perfettamente. L'errore mi viene nel ricevere il file, infatti mi genera l'errore di run time 52 bad filename or number. Ho fatto debug e mi evidenzia la seguente riga di codice.

Put #1, , file()


Ma non capisco il perchè! Spero che qualcuno possa mostrarmi la via dell'illuminazione.

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 1:33
Martedì, 16/08/2011
Testo quotato

Postato originariamente da Electronix:
Ma non capisco il perchè! Spero che qualcuno possa mostrarmi la via dell'illuminazione.



trammite -> tramite

PM Quote
Avatar
Electronix (Normal User)
Newbie


Messaggi: 5
Iscritto: 15/08/2011

Segnala al moderatore
Postato alle 12:37
Martedì, 16/08/2011
Ho cambiato mettendo

Dim file() As Byte
Winsock1.GetData file
Open App.Path & "file.exe" For Binary Access Write As #1
Put #1, , file()

Ma questa volta mi dice file already open, credo sia dovuto al fatto che sia in fase di trasferimento. Non capisco, avrei bisogno di un chiarimento nel ricevere.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:40
Mercoledì, 17/08/2011
Il problema (magnifico09 o chiunque tu sia) è che non hai le necessarie conoscenze (intendo le "minime" conoscenze) sia di programmazione VB sia di programmazione "di rete" per affrontare questo problema (anche se qualcuno non sarà d'accordo con me, però è così ...).

Il consiglio non è quello di dirti come va scritto un programma del genere o come si usi il controllo winsock, ma di affrontare problemi più semplici, che ti facciano diventare pratico del linguaggio e di studiare la "teoria" riguardante la trasmissione/ricezione dati in rete.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Electronix (Normal User)
Newbie


Messaggi: 5
Iscritto: 15/08/2011

Segnala al moderatore
Postato alle 11:46
Giovedì, 18/08/2011
Tu mi fai ridere non mi conosci e già critichi.Non so chi sia magnifico09,quindi evitiamo di paragonarmi ad altri ;) La rete la conosco e pure le basi di vb. Il codice è mio, il winsock lo conosco bene infatti la connessione parte e invia il file. Il problema caro nessuno (già dal nome capisco tutto di te) stava dalla parte di put #1, file. Evita di rispondere se non vuoi aiutare.

P.S Dimenticavo "Il mio scopo è aiutarti, non di creare il programma al posto tuo." Ma perfavore.

Ultima modifica effettuata da Electronix il 18/08/2011 alle 11:56
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 12:28
Giovedì, 18/08/2011
Stai sbagliando approccio :pat:
Per dirti, non comunichi all'altro socket quanto è grande il file da inviare, quindi ti complichi non poco la vita e causi errori come quello dello stream che ti dimentichi di chiudere.

Ti consiglierei questo link:
http://www.vbsimple.net/index.htm?/ftv21/cliserv.htm
Dai un'occhiata alle basi del winsock e al trasferimento files 1 e 2.

Ultima modifica effettuata da il 18/08/2011 alle 12:29
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:55
Sabato, 20/08/2011
Testo quotato

Postato originariamente da Electronix:

Tu mi fai ridere ...



Sarà, ma se altri ti consigliano di leggere "le basi del winsock" allora non sono il solo a pensarla in questo modo ...

In ogni caso, il mio è un "consiglio" non una "critica".

Se non vuoi seguirlo, il problema resta tuo :pat:

P.S. Un errore come "trammite", ripetuto più volte, è come una "firma" ... come

magnifico09

http://forum.html.it/forum/showthread.php?threadid=1464398

o come Acquila2012

http://forum.html.it/forum/showthread.php?s=&threadid=1472925

(per inciso, si scrive Aquila ...)


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 17:08
Sabato, 20/08/2011

nessuno ftw!

un grandissimo facepalm per electronix

PM Quote