Forum - Visual Basic 6
- winsock client download
Pagine: [ 1 2 ]
|
black93 (Normal User)
Newbie
Messaggi: 9
Iscritto: 19/07/2008
salve
potete aiutarmi a sviluppare il seguente codice per far si che quando si seleziona nel textbox il file, tramite un button parta il download??Xd
client
Codice sorgente - presumibilmente VB.NET
Option Explicit
Private ELENCADIR As Boolean
Private Sub ElencaFrame_DragDrop( Source As Control, X As Single, Y As Single)
End Sub
Private Sub Form_Load( )
Load Client( 1 ) ' Alloca istanza
End Sub
Private Sub Connetti_Click( )
If Trim ( HostName.Text ) = "" Then Exit Sub
Unload Client( 1 ) ' Dealloca prima di utilizzare
Load Client( 1 ) ' Rialloca istanza
Client( 1) .Connect Trim ( HostName.Text ) , 1500
End Sub
Private Sub Disconnetti_Click( )
Client( 1) .Close ' Disconnetti
End Sub
Private Sub AggiornaButton_Click( )
If Client( 1) .State <> sckConnected Then Exit Sub
ELENCADIR = True
If SceltaDIR( 0) .Value Then Client( 1 ) .SendData "DIRF" & vbNewLine
If SceltaDIR( 1) .Value Then Client( 1 ) .SendData "DIRS" & vbNewLine
If SceltaDIR( 2) .Value Then Client( 1 ) .SendData "DIR" & vbNewLine
End Sub
Private Sub Client_DataArrival( Index As Integer , ByVal bytesTotal As Long )
Dim DATI As String
Client( 1 ) .GetData DATI, vbString, bytesTotal ' Ricevi
If ELENCADIR = True Then PreparaElenco DATI
End Sub
Private Sub ElencoFiles_DblClick( )
Client( 1 ) .SendData "CD " & ElencoFiles.Text & vbNewLine
End Sub
Private Sub PreparaElenco( ByVal Elenco As String )
Dim INVIO As Integer
ELENCADIR = False
ElencoFiles.Clear
Elenco = Mid ( Elenco, InStr ( 1, Elenco, vbNewLine) )
INVIO = InStr ( 1, Elenco, vbNewLine)
If InStr ( INVIO + 1, Elenco, vbNewLine) < 1 Then INVIO = 0
While INVIO <> 0
ElencoFiles.AddItem Mid ( Elenco, INVIO + 2, InStr ( INVIO + 1, Elenco, vbNewLine) - INVIO - 2)
INVIO = InStr ( INVIO + 1, Elenco, vbNewLine)
If InStr ( INVIO + 1, Elenco, vbNewLine) < 1 Then INVIO = 0
Wend
End Sub
Server
Codice sorgente - presumibilmente VB.NET
Option Explicit
Private DATIINARRIVO As String ' Dati senza invio
Private Sub Form_Load( )
Server.Listen
End Sub
Private Sub Form_Unload( Cancel As Integer )
Server_Close ' Chiusura del server
End
End Sub
Private Sub Server_Close( )
Server.Close
Server.Listen ' Riapre la porta in ascolto
StatoConnessione.Caption = "Nessun utente collegato"
End Sub
Private Sub Server_ConnectionRequest( ByVal requestID As Long )
Server.Close
Server.Accept requestID ' Accetta connessione
DoEvents
TimeOut.Enabled = True ' Avvia countdown
StatoConnessione.Caption = "Un utente collegato"
End Sub
Private Sub Server_DataArrival( ByVal bytesTotal As Long )
Dim DATI As String
TimeOut.Enabled = False
On Error Resume Next
Server.GetData DATI, vbString, bytesTotal ' Legge buffer
DATIINARRIVO = DATIINARRIVO & DATI ' Appende buffer
If Right ( DATIINARRIVO, 2) = vbNewLine Then
GestisciComandi Left ( DATIINARRIVO, Len ( DATIINARRIVO) - 2 )
DATIINARRIVO = ""
End If
TimeOut.Enabled = True ' Azzera countdown
End Sub
Private Sub TimeOut_Timer( )
Server_Close
TimeOut.Enabled = False
End Sub
Private Sub GestisciComandi( ByVal COMANDO As String )
Dim VALORE As String
On Error Resume Next
If InStr ( 1 , COMANDO, " " ) <= 0 Then
Select Case UCase ( COMANDO) ' Comandi senza parametri
Case "QUIT" : Server_Close
Case "BYE" : Server_Close
Case "DIR" : LeggiFilesDir CurDir , True , True
Case "DIRS" : LeggiFilesDir CurDir , True , False
Case "DIRF" : LeggiFilesDir CurDir , False , True
Case Else : Server.SendData " -ERR: Comando sconosciuto -> " & COMANDO & vbNewLine
End Select
Else ' Comandi con parametri
VALORE = Trim ( Mid ( COMANDO, InStr ( 1 , COMANDO, " " ) + 1) )
If UCase ( Left ( COMANDO, InStr ( 1 , COMANDO, " " ) - 1 ) ) = "CD" Then
ChDir VALORE
Server.SendData " +OK: La cartella di lavoro è: " & CurDir & vbNewLine
End If
End If
End Sub
Public Sub LeggiFilesDir
( ByVal CARTELLA
As String ,
ByVal CARTELLE
As Boolean ,
ByVal FILES As Boolean ) Dim ELENCOFILESDIR As String
Dim TEMPSTR As String
Dim VALIDO As Boolean
ELENCOFILESDIR = ""
If Right ( CARTELLA, 1 ) = "\" Then CARTELLA = Left ( CARTELLA, Len ( CARTELLA) - 1)
TEMPSTR = Dir ( CARTELLA & "\*.*" , vbArchive + vbDirectory + vbHidden + vbNormal + vbReadOnly + vbSystem)
While TEMPSTR <> ""
VALIDO = False
If ( CARTELLE = True ) And ( GetAttr( CARTELLA & "\" & TEMPSTR) And vbDirectory) = vbDirectory Then VALIDO = True
If ( FILES = True ) And ( GetAttr
( CARTELLA
& "\" & TEMPSTR
) And vbDirectory
) <> vbDirectory
Then VALIDO
= True If VALIDO = True Then ELENCOFILESDIR = ELENCOFILESDIR & vbNewLine & TEMPSTR
TEMPSTR = Dir ' Elemento successivo
Wend
Server.SendData " +OK: " & ELENCOFILESDIR & vbNewLine
End Sub
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
In un forum si posta indicando il PROBLEMA che si ha e cosa non va. Poi si fornisce il codice dicendo dove potrebbe essere il problema ...
Come hai posto tu la questione, non si sa cosa e dove fare ...
black93 (Normal User)
Newbie
Messaggi: 9
Iscritto: 19/07/2008
Non centra.Io sto chiedendo una mano perchè non so come fare fare per far si che quando si seleziona l'oggetto dalla list tramite un cmd download si possa scaricare il file..sempre che qualcuno sappia come fare
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
Postato originariamente da black93 :
Non centra.
Mentre, secondo me, quello che ti ho detto, c'entra ...
... quando si seleziona l'oggetto dalla list ...
Non era una textbox ?
tramite un cmd download si possa scaricare il file..
Ma il codice lo hai scritto tu?
Ci sono degli esempi di comandi inviati per avere la lista delle cartelle e dei file (sembra un tentativo mal realizzato di trojan ...) ...
Comincia ad aggiungere un comando per l'invio di file (ad esempio FILE) e poi si aggiunge il codice per lo scambio vero e proprio ...
black93 (Normal User)
Newbie
Messaggi: 9
Iscritto: 19/07/2008
mi spieghi meglio come fare???pls
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
Ad esempio, dove c'e'
Case "DIRF": LeggiFilesDir CurDir, False, True
viene eseguito il comando DIRF inviato dal client.
Tu devi inserire un altro comando, ad esempio
Case "FILE": RiceviFile
e modificare il client in modo che invii tale comando e subito dopo invii il file e nel server in modo che riceva il comando e riceva il file ...
black93 (Normal User)
Newbie
Messaggi: 9
Iscritto: 19/07/2008
edit:
aggiungo al client :
Private Sub download_Click()
Win.SendData "file"
End Sub
poi al server:
case "file"...però come posso fare per far si che mi invii l'elemento selezionato???
Ultima modifica effettuata da black93 il 20/07/2008 alle 11:54
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
Oltre al comando FILE invia anche il nome del file ...
Quando il server riceve il comando, estrae il nome del file e puo' leggerlo e inviarlo ...
black93 (Normal User)
Newbie
Messaggi: 9
Iscritto: 19/07/2008
Vieni su msn cosi parliamo meglio...ti ho aggiunto