Newsgroup: it.comp.lang.visual-basic
Titolo: [Client ftp] errore dal server: 425

Salve,
questa sera ho iniziato a costruire il mio client ftp usando il
controllo winsock. Ricevo un errore che non capisco; dopo essermi collegato
al mio server (l' errore ce l' ho con tutti) mi arriva sulla testa questo
errore 425. In pratica questa è la sequenza di quello che accade, vi posto
i messaggi che ho dal server:
1) mi coonetto a un server
2) 220....
3)
331 Password required for...
4) 230 user logged in (dopo aver metto la
passwor corretta)
5) 257 "/xxx/xxx" is home directory
6) 200 PORT command
successful
7) 425 can't build data connection. Connection refused
Fine
dei giochi...ma perchè ricevo sempre questo errore da qualunque server?
Aspetto news, grazie.
Saluti...
--------------------------------
Inviato via 
http://usenet.iol.it


aridaje il solito errore di tutti....
devi aprire o collegarti con un altro winsock (la cosa dipende dal mode che
hai settato)
-------
sito: 
www.dadev.it
ultime: Ocx per irc testi freeware
-------

che hai settato)
Ahhh
finalmente eccoti :)
C'è un post di un po di tempo fa, in cui un altro
riceveva il mio stesso errore. Ho letto tutto il thread, ma non si è ben
capito se poi lui alla fine ha risolto o no :)) Speravo che entrassi anche
nel mio...
In effetti io uso un solo controllo winsock, e non è settate in
listen, anche perchè credevo che, se winsock1 riesciva a prendere le
risposte dal server, sapeva anche ricevere una stringa di testo, una volta
in cui davo ll comando...list per esempio, o qualunque altro. Ti incollo il
codice che ho scritto io, è un po rozzo, ma mi serviva per capire questi
problemini tecnici :))
=========================================================
Option Explicit
Private Sub Command1_Click()
    With Winsock1
        .LocalPort = 0
.RemotePort = 21
        .RemoteHost = "192.168.0.1"
        .Connect
End With
End Sub
Private Sub Form_Load()
    Winsock2.Listen
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim
strMessaggioRicevuto As String
 
    Winsock1.GetData
strMessaggioRicevuto, vbString
 
    sbGetCodiceRisposta
strMessaggioRicevuto
End Sub
Private Sub sbGetCodiceRisposta(ByVal
strResponse As String)
    Dim intCodiceRisposta As Integer
    Dim
strSend As String
 
    MsgBox strResponse
    intCodiceRisposta =
CInt(Left$(strResponse, 3))
 
    Select Case intCodiceRisposta
Case 200
            Winsock1.SendData "LIST" & vbCrLf
        Case 220
Winsock1.SendData "USER skunk" & vbCrLf
        Case 226
MsgBox strResponse
        Case 230
            Winsock1.SendData "PWD" &
vbCrLf
        Case 231
            'MsgBox "user ok, password?"
Case 331
            Winsock1.SendData "PASS skunk" & vbCrLf
        Case
257
            strSend = "PORT " & Replace("192.168.0.2", ".", ",")
strSend = strSend & "," & 1100 \ 256 & "," & (1100 Mod 256)
strSend = strSend & vbCrLf
 
            Winsock1.SendData
strSend
        Case Else
            MsgBox "errore " &
intCodiceRisposta
    End Select
End Sub
=========================================================
Questo è il
codice che ho scritto ora, cioè quello che non va. Come potrebbe essermi
utile un altro controllo winsock? Ma soprattutto, perchè? Perchè quello che
ho non è in grado di leggere le risposte di un comanda da lui stesso
lanciato?
Grazie, saluti...
PS: a quest' ora è un po complicato fare
qusti discorsi impegnativi :P almeno per me è mooooolto complicato.


 capito se poi lui alla fine ha risolto o no :)) Speravo che entrassi anche
l'unica cosa che alla fine dovevi capire e di scaricare qualche esempio da
internet il resto è stato detto :)
--


internet il resto č stato detto :)
Bhč, sicuramente cerco male io
ma...tutti questi esempi di codici in rete non li ho mica trovati, tranne
uno suggeritomi in un altro post.
Vabbč, grazie comunque...mi arrangio in
un altro modo.
Saluti...


internet il resto è stato detto :)
Io non capisco perchè ti rimane così
difficile adarci un aiuto ivece che raggirare il problema, se sai come
risolverlo.
Vabbè, non facciamo polemiche inutili...ho trovato qualcosa in
rete e ho fatto delle prove.
Ho capito il fatto delle due connessioni, e
ora ne uso due, di fatto non ho più l' errore di prima, ma una volta
eseguito il comandi list, il DataArrival del secondo winsock mi restituisce
una stringa vuota. Che non ci siano directory o files? Impossibile :)
Dove
altro stò sbagliando? Ti incollo il mio codice, almeno ti sarà più semplice
capire:
===========================================================================
Option Explicit
Private Sub Command1_Click()
    With Winsock1
.LocalPort = 0
 
        .RemotePort = 21
        .RemoteHost =
"192.168.0.1"
        .Connect
    End With
 
    With Winsock2
.LocalPort = 0
        .RemotePort = 21
        .RemoteHost =
"192.168.0.1"
        .Connect
    End With
End Sub
Private Sub
Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim
strMessaggioRicevuto As String
 
    Winsock1.GetData
strMessaggioRicevuto, vbString
 
    sbGetCodiceRisposta
strMessaggioRicevuto & " (winsock1)"
End Sub
Private Sub
Winsock2_DataArrival(ByVal bytesTotal As Long)
    Dim
strMessaggioRicevuto As String
 
    Winsock1.GetData
strMessaggioRicevuto, vbString
 
    MsgBox strMessaggioRicevuto
End
Sub
Private Sub sbGetCodiceRisposta(ByVal strResponse As String)
Dim intCodiceRisposta As Integer
    Dim strSend As String
MsgBox strResponse
    If strResponse <> " (winsock2)" Then
intCodiceRisposta = CInt(Left$(strResponse, 3))
    End If
Select Case intCodiceRisposta
        Case 200
            MsgBox "do il
LIST"
 
            Winsock2.SendData "LIST" & vbCrLf
Case 220
            Winsock1.SendData "USER skunk" & vbCrLf
        Case
226
            MsgBox strResponse
        Case 230
Winsock1.SendData "PWD" & vbCrLf
        Case 231
            'MsgBox
"user ok, password?"
        Case 331
            Winsock1.SendData "PASS
skunk01" & vbCrLf
        Case 257
            strSend = "PORT " &
Replace("192.168.0.2", ".", ",")
            strSend = strSend & "," &
1100 \ 256 & "," & (1100 Mod 256)
            strSend = strSend & vbCrLf
Winsock1.SendData strSend
        Case Else
            MsgBox "errore "
& intCodiceRisposta
    End Select
End Sub
===========================================================================
Aspetto news, ci conto eh! Grazie...
Saluti...



Quanto e' lunga la stringa?
Dovresti fare prima
strMessaggioRicevuto  Space(bytesTotal)
In modo che il controllo sappia quanti byte prelevare...
Ciaotutti,
*