Newsgroup: it.comp.lang.visual-basic
Titolo: Applicazione console

ciao,
ho creato una applicazione console (senza form quindi) che, tra l'altro,
accede ad un database.
Questa applicazione dovrà poi essere eseguita tramite telnet di win2003 in
modalità remota.
C'è modo di intercettare una "brusca" chiusura o interruzione della
connessione TCP dal programma in VB , considerato che non ho form ?
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 connessione TCP dal programma in VB , considerato che non ho form ?
Potresti eseguire periodicamente un netstat controllando
sulla porta del telnet.
Sulla riga di comando a mano faresti una cosa simile:
$ netstat --protocol=inet --numeric-ports
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address 
State
tcp        0      1 
192.168.0.197:33240
 
209.171.52.99:80
 
FIN_WAIT1
tcp        0      1 
192.168.0.197:33243
 
209.171.52.99:80
 
FIN_WAIT1
tcp        0      1 
192.168.0.197:33242
 
209.171.52.99:80
 
FIN_WAIT1
tcp        0      1 
192.168.0.197:33245
 
209.171.52.99:80
 
FIN_WAIT1
tcp        0      1 
192.168.0.197:33244
 
209.171.52.99:80
 
FIN_WAIT1
tcp        0      1 
192.168.0.197:33246
 
209.171.52.99:80
 
FIN_WAIT1
Dovresti quindi scandire il risultato per la porta di ascolto del
server telnet locale ed il foreign address corrispondente al client
telnet remoto.
Per farla piu` raffinata della redirezione dell'output di netstat
su file e conseguente analisi dello stesso, potresti utilizzare
GetTcpTable(), descritta qui
http://msdn.microsoft.com/library/en-us/iphlp/iphlp/gettcptable.asp
ed esemplificata in visual basic qui:
http://www.vbip.com/iphelper/get_tcp_table.asp
http://www.ostrosoft.com/vb/projects/iphlpapi.asp
-- 
ciao, hal

mmh...
ma come faccio dalla applicazione console (lanciata nel login.cmd) a
sapere l'indirizzo IP del "chiamante" dato che ho un dhcp e più terminali
connessi ?


beh, una mezza risposta me la do' da solo:
potrei fare un 
C:\WINDOWS\system32>tlntadmn -s
1 sessioni telnet
ID    Dominio    NomeUtente    Client           DataAcc.   OraAcc.   
InattivoDa
(hh:mm:ss)
-------------------------------------------------------------------------------
2052  sygest     mercoscemo    192.168.110.212  08/07/2005 9.51.23   
0:05:42
e ho l'IP, dati che l'utente è sempre differente...
Un ultimo dubbio: dato che il menu a caratteri di questa applicazione si
aspetta un input dall'utente tramite ReadConsole, e non ho di form...
come faccio ad impostare un timer che ad intervalli prefissati verifichi
la presenza o meno della connessione attiva e esca dal programma ?


 la presenza o meno della connessione attiva e esca dal programma ?
Puoi usare un form nascosto oppure usare la SetTimer() dell'API
a cui puoi passare l'indirizzo di una funzione di callback.
Qui c'e' un po' di spiegazione, ma vedrai che non e' difficile:
http://www.developerfusion.com/show/1090/
-- 
ciao, hal

non ho provato il link che mi hai indicato, ma tutte le prove che ho fatto
con timer (DLL activeX) non funzionano... tutto dorme...nessun evento
scatenato...
cmq nel frattempo ho trovato (x xp e 2003) l'oggetto (criticatissimo)
TLNTSVRLib.EnumTelnetClientsSvr che restituisce una stringa cosě:
2,1412\SYGEST\Mercanti\127.0.0.1\2005\7\5\8\9\32\56\965\180\,2500\SYGEST\Mercanti\127.0.0.1\2005\7\5\8\9\35\51\450\6\,?


 2,1412\SYGEST\Mercanti\127.0.0.1\2005\7\5\8\9\32\56\965\180\,2500\SYGEST\Mercanti\127.0.0.1\2005\7\5\8\9\35\51\450\6\,?
interessante, non lo conosco, grazie per la segnalazione
-- 
ciao, hal

ho provato questo...
http://www.vb-helper.com/howto_timer_api_wo_form.html
ma niente...
secondo me il problema è della funzione 
ReadConsole
che è bloccante, un po' come il readln del turbo pascal...
