Newsgroup: it.comp.lang.visual-basic
Titolo: Winsock, Win2000 e (forse) Telnet

Salve, ho qualche problema con il Winsock (credo sia lui l'incriminato!).
Allora, creo un nuovo progetto e ci piazzo Microsoft Winsock, 
chiamandolo Sock.
Nell'evento Form_Load ci metto un bel:
	If Sock.State<>sckClosed Then Sock.Close
	Sock.LocalPort=28881
	Sock.Listen
Poi nel Sock_ConnectionRequest faccio:
	If Sock.State <> sckClosed Then Sock.Close
	Sock.Accept requestID
E fin qui tutto ok.
Mi collego via Telnet alla mia applicazione (lanciata da VB, non 
compilata) e funziona tutto. Mi connetto al mio Sock via telnet e gli 
lancio i comandi.
Se gli lancio il comando TERMINATE (stringa via telnet), il mio winsock 
la riceve, la processa tranquillamente e termina l'applicazione. Il 
codice è questo:
     Select Case CommandName
         Case "TERMINATE"
             Sock.Close
             Unload Me
     End Select
E tutto ok. Il programma si stoppa e torno a usare VB6.
Se però RIESEGUO l'applicazione, si blocca tutto. Il progetto si freeza, 
VB anche, e sono costretto a un "TASTO DESTRO" su VB6 nella barra delle 
applicazioni e a un "ESCI" forzato, con relativa schermata di "TERMINA 
ADESSO".
Mi sono accorto che quando uso Winsock è sempre così, mai lanciare due 
volte l'applicazione da VB.
Non ho controllato cosa accada se compilo e lancio l'eseguibile, e non 
mi interessa. Anche se andasse tutto ok da compilato, come potrei 
lavorare al progetto se da VB mi si pianta?
Che voi sappiate, c'è modo di risolvere la cosa? E' mai capitato a 
qualcuno di voi? Che si fa? C'è un nuovo controllo Winsock da scaricare?
-- 
Rivolterò il mondo per trovarlo, e anche se andasse in Indocina uno dei 
nostri starà nascosto in una ciotola di riso pronto a sparargli nel culo.
(Pulp Fiction)

Dimenticavo l'altra domanda da porvi: come faccio ad attivare l'echo al 
telnet? Non riesco a vedere cosa digito. Sicuramente c'è da inviare una 
stringa al client telnet, ma quale? Non conosco il protocollo...
Thx ancora!!!


Sono riuscito (tempo che scarseggia) a fare un po' di prove.
Ho notato alcune cose:
1 - Se lancio il progetto compilato, funziona benissimo (posso chiudere 
e rieseguire tutte le volte che voglio e il progetto funziona sempre);
2 - Si blocca solo da VB, all'istruzione Sock.Listen nel Form_Load, 
quando termino lato server (il mio progetto) e rieseguo.
3 - Se quando sono connesso via telnet al mio server, chiudo burtalmente 
telnet, il mio programma genera il Sock_Close, rimettendosi 
tranquillamente in Listen, senza problemi.
In pratica mi viene il problema è solo da VB, quando l'applicazione 
termina e devo riavviarla.
Idee?
Vi prego non so come continuare a fare test!!!!


 Vi prego non so come continuare a fare test!!!!
Ti propongo una alternativa: su vbaccelerator mi sembra di avere visto una
classe che sostituisce in tutto e per tutto il controllo Winsock (mi sembra
si chiami CSocket o qualcosa di simile). Cosi' non hai piu' bisogno nemmeno
dell'OCX e guardando il codice hai piu' possibilita' di capire cosa succede.
Fabio
http://www.codice.it

 dell'OCX e guardando il codice hai piu' possibilita' di capire cosa succede.
Corro subito :)
Grazie per la dritta, e comunque se qualcuno riesce a dirmi cos'ha 
Winsock che mi blocca VB6 me lo faccia sapere lo stesso eh?
Salut!


DOH!!! Non trovo niente... Sicuro che fosse su vbaccelerator?


 stringa al client telnet, ma quale? Non conosco il protocollo...
Per il remote echo visualizzi tutto quel che ricevi... per il local invece
..beh... e' semplice  :D
--
rIO.sK

 ..beh... e' semplice  :D
? :-O
Sarà anche smeplice, ma come si fa? Ripeto che uso il telnet di W2K, che 
altro non è se non una finestra ms-dos. Mi son girato tutte le 
impostazione ma non c'è niente... Secondo me devo inviare una stringa 
via winsock al client telnet che gli dica di farmi vedere cosa scrivo... 
che è la stessa cosa che fanno i server ftp per abilitare/disabilitare 
l'echo in modo da nascondere la digitazione delle password...



Non sono per niente sicuro. L'avevo scaricato comunque, se vuoi posso
inviartelo per email. Dimmi tu
Fabio
http://www.codice.it

 inviartelo per email. Dimmi tu
Si si si!!! :) :) :)
Te ne prego :)
Il mio indirizzo è:
asepran chiocciola tin punto it
Grazie!!! :)



Sul "dataarrival" prendi i dati e subito dopo fai un "senddata" sui dati
presi.
Byezz

 presi.
Thx :)


Ok ho ricevuto tutto completo di progetto, ma il problema è che non si 
verifica il DataArrival... Ci ho messo una bella pallozzetta rossa di 
breakpoint ma niente, non ci entra.
Praticamente dopo il Sock.Listen controllo Sock.State ed effettivamente 
è in Listening.
L'indirizzo IP di LocalIP è quello della mia macchina.
Mi collego via telnet a "mio_ip:mia_porta" e tutto è ok perchè ricevo il 
messaggio di benvenuto del mio server, ma se pigio qualche tasto da 
telnet, niente... non ricevo nulla.
Anche l'esempio di TCP Chat fornito nel file zip ha questo problema: il 
client riceve ma il server no.
Che vordì???


 inviartelo per email. Dimmi tu
Lavoro molto con le reti, quindi se lo invii pure a me, mi fai un favore
ottomano CHIOCCIOLA fastwebnet PUNTO it
grazie
-- 
Esistono 10 tipi di persone: chi conosce il binario e chi no.
Gestione Ottica - Gestionale per Ottici e Programmi Gratuiti su:
http://www.nicolaottomano.it


Guarda non saprei che dirti. Come ti ho scritto non l'avevo mai provata:
l'avevo scaricata perche' sembrava ben fatta.
Quando ho qualche minuto provo a darci un'occhiata anche io.
-- 
Fabio
http://www.codice.it

 Quando ho qualche minuto provo a darci un'occhiata anche io.
Ok thanx!!!


 stringa al client telnet, ma quale? Non conosco il protocollo...
1) telnet
2) Set local_echo
la prossima volta che usi telnet avrai l'echo locale attivato
-- 
Ciao, Silv:o)