Oppure

Loading
15/08/11 15:13
Electronix
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.
aaa
15/08/11 23:33
HeDo
Postato originariamente da Electronix:
Ma non capisco il perchè! Spero che qualcuno possa mostrarmi la via dell'illuminazione.


trammite -> tramite
aaa
16/08/11 10:37
Electronix
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.
aaa
17/08/11 14:40
nessuno
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à.
18/08/11 9:46
Electronix
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 18/08/11 9:56
aaa
18/08/11 10:28
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:
vbsimple.net/…
Dai un'occhiata alle basi del winsock e al trasferimento files 1 e 2.
Ultima modifica effettuata da 18/08/11 10:29
20/08/11 8:55
nessuno
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

forum.html.it/forum/…

o come Acquila2012

forum.html.it/forum/…

(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à.
20/08/11 15:08
HeDo

nessuno ftw!

un grandissimo facepalm per electronix
aaa