Newsgroup: it.comp.lang.visual-basic
Titolo: Socket [VB .NET]

Ciao a tutti.
Qlc sa dirmi se esiste un modo per attendere finchč il server non ha finito
di eseguire un'operazione?
Vi spiego il mio problema.
Sto creando una classe ftp che lavora con i socket. Quando mi collego al
server ottengo dapprima una risposta 220. Se va a buon fine lancio un
comando al server di login utente. Lui mi torna 331 al che io inserisco la
password. Se sono riconosciuto mi torna 230. Questo č il percorso in un caso
semplice.
Ho perň provato a collegarmi con altri server e ho notato delle differenze.
Per esempio alucni di questi hanno piů righe 220 all'inizio. Io mi
aspetterei che quando faccio la RECEIVE lui mi torni tutto lo stringone con
le righe 220, invece me ne manda solo una alla volta (forse il server
riconosce piů righe dal CRLF e ne spedisce cosě una alla volta). Il problema
č che mentre io gli mando la richiesta di login quello anzichč rispondermi
331 (cioč inserisci la password) mi risponde 220 (e cioč una parte della
stringa iniziale). Cosě facendo io non ho un modello standard e ogni server
mi risponde a suo modo. Un accrocchio che ho trovato funzionale ma orrendo č
quello di mettere un ciclo di ritardo tra la SEND e la RECEIVE in modo di
ottenere la risposta "ritardataria" in un messaggio successivo e permettere
cosě di arrivare al fatidico 230 (loggato). Un ciclo di ritardo utile per
tutti č intorno ai 5 secondi: impensabile da attuare! Una cosa da aggiungere
č che se eseguo passo passo il problema non si pone e riesco a ricevere i
messaggi correttamente.
Sto sbattendo la testa sul muro da ore...
Spero che questo labirinto di parole sia chiaro almeno a qualcuno...
Grazie in anticipo...
Max

 stringa iniziale).
Vedi 
http://www.rfc-editor.org/rfc/rfc959.txt
 al punto 5.4,
"SEQUENCING OF COMMANDS AND REPLIES". Alla pagina 56
c'č il diagramma di flusso previsto per il Login di una applicazione
FTP d'esempio. Cito:  "The most complicated diagram is for
the Login sequence".
Auguri... :-)
Bye, G.

 Bye, G.
Max

 vogliono...
Dimenticavo la cosa più importante: le righe multiple sono indicate
da un trattino come quarto carattere dopo i primi 3 del codice
messaggio, quindi per esempio, iniziano con "220-" (col trattino)
ad indicare appunto che seguono altre righe dello stesso messaggio.
Dovrebbe essere tutto in quella RFC, ma spulciarla è una rogna. :-))
Tu in pratica dovresti attendere la riga con "220 ", insomma:
duecentoventi seguito da uno spazio, quella sarà l'ultima riga
della risposta del server, le altre possono essere ignorate.
La stessa cosa potrebbe succedere con altre risposte, tipo:
331- immettere la propria password
331- se siete utenti anonimi usare blablabla.
331- se siete guest usate invece bla bla bla
331 Password:
HTH, G.

 Dovrebbe essere tutto in quella RFC, ma spulciarla è una rogna. :-))
L'ho ritrovato, era alle pagine 34-35. :-)
      A reply is defined to contain the 3-digit code, followed by Space
      <SP>, followed by one line of text (where some maximum line length
      has been specified), and terminated by the Telnet end-of-line
      code.  There will be cases however, where the text is longer than
      a single line.
    [cut]
      Thus the format for multi-line replies is that the first line
      will begin with the exact required reply code, followed
      immediately by a Hyphen, "-" (also known as Minus), followed by
      text.  The last line will begin with the same code, followed
      immediately by Space <SP>, optionally some text, and the Telnet
      end-of-line code.
Bye, G.

 > Dovrebbe essere tutto in quella RFC, ma spulciarla č una rogna. :-))
Trovato e modificato. Adesso in pratica continuo a fare richieste al server
fino a che non ho i 3 numeri senza il trattino.
Grazie mille per l'aiuto. Hai fatto si che adesso posso anche andare a
dormire :-))))

 dormire :-))))
'notte :-)
Bye, G.