DooM1
07-01-2010, 03:41
Ciao, tempo fa programmai una chat in VB6, usando il WinSock (controllo OCX). Ci avevo messo un po' ma c'ero riuscito, ed avevo imparato tante cosettine.
Ora voglio rifare tutto da capo con VB.net (ora sto usando Visual Basic 2008 express edition), ma ho dei problemi con la classe Socket.
Diciamo che ho fatto tutto ma ho problemi con la ricezione di dati o di connessioni.
In pratica facciamo che metto la chat in listening, quindi uso il metodo Listen() della classe Socket.
Dopodichè, in VB6 usavo il metodo Accept() "dentro" l'evento ConnectionRequest. Ma ora in VB.net non ho nessun evento.
Non capisco proprio come faccio a eseguire Accept() nel momento in cui arriva una richiesta di connessione (se non ho a disposizione gli eventi).
Io ho ipotizzato 2 alternative:
1) fare il polling con un timer per determinare quando è richiesta una connessione: ma questa soluzione non mi piace affatto, perchè non voglio che se la chat rimane disconnessa per lungo tempo rimanga cercando e impegnando risorse (anche se poca roba), e poi la connessione non sarebbe immediata perchè non è sincrona (non sò se mi sono spiegato)
2) intercettare in qualche modo l'evento... se fa... e se il socket lo permette (ma da quello che ho capito non ha nessun gestore eventi e non capisco perchè).
In effetti ci sarebbe un altra ipotesi, ossia di creare l'evento ex-novo (se già non esiste da intercettare).
Ma in tutti gli esempi che ho visto per creare eventi, c'è l'utilizzo di un ciclo infinito in background o di un timer.
Insomma non se ne esce da timer o cicli infiniti. Ma gli eventi funzionano tutti a così (timer o loop infiniti)?
Mi illuminate per favore? :D
Grazie.
Ora voglio rifare tutto da capo con VB.net (ora sto usando Visual Basic 2008 express edition), ma ho dei problemi con la classe Socket.
Diciamo che ho fatto tutto ma ho problemi con la ricezione di dati o di connessioni.
In pratica facciamo che metto la chat in listening, quindi uso il metodo Listen() della classe Socket.
Dopodichè, in VB6 usavo il metodo Accept() "dentro" l'evento ConnectionRequest. Ma ora in VB.net non ho nessun evento.
Non capisco proprio come faccio a eseguire Accept() nel momento in cui arriva una richiesta di connessione (se non ho a disposizione gli eventi).
Io ho ipotizzato 2 alternative:
1) fare il polling con un timer per determinare quando è richiesta una connessione: ma questa soluzione non mi piace affatto, perchè non voglio che se la chat rimane disconnessa per lungo tempo rimanga cercando e impegnando risorse (anche se poca roba), e poi la connessione non sarebbe immediata perchè non è sincrona (non sò se mi sono spiegato)
2) intercettare in qualche modo l'evento... se fa... e se il socket lo permette (ma da quello che ho capito non ha nessun gestore eventi e non capisco perchè).
In effetti ci sarebbe un altra ipotesi, ossia di creare l'evento ex-novo (se già non esiste da intercettare).
Ma in tutti gli esempi che ho visto per creare eventi, c'è l'utilizzo di un ciclo infinito in background o di un timer.
Insomma non se ne esce da timer o cicli infiniti. Ma gli eventi funzionano tutti a così (timer o loop infiniti)?
Mi illuminate per favore? :D
Grazie.