Accade questo perchè stai usando l'oggetto shell in modo non
interattivo.
Praticamente REALBasic esegue il comando e diciamo (non ne sono
sicuro) che appena riceve la prima stringa di risposta nel buffer
chiude l'esecuzione del comando e mette la risposta nella proprietà
Result. Quindi non c'è modo di effettuare una sessione telnet con un
oggetto shell in modo sincrono.
Per utilizzare la shell in modo interattivo devi settare la proprietà
Mode su 2:
Dim s as New Shell
s.Mode = 2
A questo punto puoi usare la shell esattamente come un TCPSocket.
Per scrivere qualcosa puoi richiamare il metodo "Write", non devi
scordarti di aggiungere il carattere di ritorno a capo, chr(13),
altrimenti il comando non viene eseguito.
s.Write "telnet www.google.com 80" + chr(13)
Quando c'è qualcosa nel buffer da leggere l'evento DataAvailable
dell'oggetto shell viene attivato. Nell'evento DataAvailable puoi
dunque leggere il buffer con ad esempio:
s.ReadAll
Per programmare l'evento DataAvailable ti occorre però creare una
nuova classe di tipo "Shell". Cosa che forse può essere un po'
difficile per te.
Ti conviene di più trascinare nella finestra un Timer, e nell'evento
Action scrivere:
Dim testoLetto as string
If s <> Nil Then
testoLetto = s.ReadAll
End if
dove "s" è un oggetto di tipo Shell.
Tutte queste informazioni si trovano nel manuale di REALBasic per la
classe Shell.
Quello che non ti dice il manuale è che è un po' più complesso usare
un oggetto shell per effettuare una connessione SMTP. Perchè sarebbe
molto più semplice usare un'oggetto TCPSocket. Si tratta di un
componente che ti permette di effettuare la connessione TCP/IP
direttamente con un server. Mi sembra che ti avevo incluso un esempio
di come usarlo nell'altro email.
Matteo
On 15-mar-06, at 16:04, ivano monti wrote:
Ciao a tutti quasi pronta la verifica email ma mi chiedevo una cosa
curiosa perchè il comando shell execute si interrompe se simulo
telnet...
ipotesi comando
invio un comando
s.Execute "telnet mail."+txtDominio.text+" 25"
leggo la shell
v = s.ReadAll
scrivo in finestra terminale il risultato
terminal.text = terminal.text+v+chr(13)
RISULTATO
Trying 193.70.192.50...
Connected to smtp.libero.it.
>>>>Escape character is '^]'. <<<<<<
>>>> Connection closed by foreign host. <<<<<<
INVECE DI
telnet mail.libero.it 25
Trying 193.70.192.50...
Connected to smtp.libero.it.
Escape character is '^]'.
220 smtp1.libero.it ESMTP Service (1.1.0-PF-CM) ready
Ivano Monti
Sviluppo Gestionali e installazione siti professionali
P.R. ©® http://ivanomonti.iyelloworld.com/
P.R. ©® http://iyelloworld.com/
Forum > Filemaker > Java > Realbasic > MySQL & Php
Shopping > Aperto agli sviluppatori che vendono on line
(e) ivanomonti at iyelloworld
(e) ivanomonti at iyelloworld dot com
-
(t) 029693379
(f) 029693379
-
Skype = ivanomonti
AIM = ivanomonti
iChat = ivanomonti
Yahoo = ivanomonti
ICQ = 200782119
-
|