View Full Version : Chat In Vb
softgames
02-02-2003, 22:21
Come posso creare una chat in visual basic?? (tipo MSN Messanger??)
Fatemi sapere
Grazie
Einstein
03-02-2003, 12:01
Io sto facendo qualcosa di simile, ma in C#...
Uso i sockets TCP, con un server che ascolta su una data porta e i client che accedono a quella porta.
Le comunicazioni avvengono tramite uno stream TCP.
In VB6, so che esite il controllo WinSock, ma non lo conosco nel dettaglio.
Non è cosi semplice da spiegare su di un forum ed in poche righe...
...la cosa principale e se vuoi creare una chat peer-to-peer o server-client
cmq se fai un po' di ricercher per la rete trovi esempi molto belli.
Questo link ti può dare sicuramente una mano: http://www.visual-basic.it/scarica.asp?ID=631 è un esempio molto bello di come realizzare una chat a più canali (mIRC)
ciao ciao
Mezzetti0903
03-02-2003, 13:05
Einstein una domanda!!
Suppongo che lil tuo client notifichi al server quando si disconnette giusto??
Ora immagina che ciò non avvenga... come può gestire il server la situazione secondo te ??
Prima di tutto non è mio il prg ma di chi l'ha fatto...e direi che è un ottimo prg per inizire un lavoro di chat :) , un merito al progammatore :)
Il server ha un record che tiene tutti quelli connessi...potresti fare che ogni 5 minuti il tuo server faccia una verifica della reale connessione del client...se da errore il client nn è connesso ;)
La stessa cosa la fai quando sendi i dati...controlli che il dato spedito verso i vari client arrivi e nn generi un errore sulla chiusura della porta e l'interruzione della comunicazione...altrimenti se il server va in crach non è bello per i client che ci sono attaccati.
Prova a fare cosi :)
Mezzetti0903
03-02-2003, 20:32
Beh avevo pensato la stessa cosa.. ma il problema è la realizzazione... speravo mi potessi aiutare. VABBE!! ME LA CAVERO' DA SOLO
nn è che nn ti voglio aiutare...è solo che non ti posso aiutare su un prg intero e di quella portata :(
di solito in questo forum si cercano di risolvere i problemi + piccoli o indirizzare la persona a realizzare qlc danadogli degli spunti.
mi spiace ma nn avrei il tempo materiale di darti una mano, l'esempio che ti ho dato è completo e funzionante...studiatelo bene e vedrai che quando l'hai finito avrai capito + cose di quelle che ti avrei potuto dire io. :)
Originally posted by "Mezzetti0903"
Einstein una domanda!!
Suppongo che lil tuo client notifichi al server quando si disconnette giusto??
Ora immagina che ciò non avvenga... come può gestire il server la situazione secondo te ??
Puoi spedire ogni tot secondi di inattività un pacchetto di controllo...
Ad esempio puoi fare in modo che ogni pacchetto TCP/IP spedito dal server verso i client contenga anche un byte di controllo...magari il primo...
Lo puoi strutturare ad esempio così :
bit 0 - il server lo mette a 1 per chiedere al client se è ancora attivo
bit 7 - è a 1 se il pacchetto contiene del testo (definizione di testo è un sequenza di caratteri terminata con un ritorno carrello) a 0 altrimenti
poi gli altri possono servire per altri scopi....
In ogni messaggio ricevuto o spedito dal server dovrà essere presente il byte di controllo come primo byte...
Mettiamo che il server in un certo momento non riceva niente dai client...
Ovviamente il server si terrà la lista di tutti gli utenti collegati con l'ora dell'ultimo messaggio che ha ricevuto da loro...
Ogni tot secondi (mettiamo 30) il server confronta l'ora del'ultimo messaggio con l'ora attuale e se differiscono per più di un minuto il server invia un pacchetto di dati che non contiene testo a quell'utente, ma con il bit 0 a 1...
Quindi in esadecimale il byte da inviare è 0x01... Il client deve rispondere con un pacchetto identico...
In ogni caso se il server dovrà inviare un testo ad una lista di utenti e se uno i questi utenti è da più di un minuto che non invia messaggi potrà comunque verificare che questo sia connesso inviando il byte di controllo 0xF1 seguito dal testo terminato con il ritorno carrello...mentre agli altri invierà il byte di controllo 0xF0 seguito dal testo terminato dal ritorno carrello...
Ovviamente quando il bit 0 è a 0 non è necessaria risposta da parte del client...
In questo modo il server si potrà tenere conto anche del lag dei vari utenti...
In ogni caso il protocollo TCP è orientato alla connessione (seppure simulata)...quindi nel caso che un client si disconnetta quando gli viene inviato un messaggio la funzione usate per inviarlo dovrebbe in qualche modo segnalare un errore...
Mezzetti0903
04-02-2003, 14:14
Grazie Cionci.. ti farò sapere !!
Grazie a tutti!!
kolpo_81
24-04-2003, 16:12
CIAUZ A TUTTI
Stò cercando di sviluppare la stessa cosa, la mia idea è quella di salvare un file con tanti record quanti sono gli utenti connessi da qualche parte su internet (DB Access o simili) leggere questo file a intervalli regolari e aggiornale la lista (in alternativa ad ogni connessione/disconnessione di un client vado a leggere il file), l'eseguibile dovrà contenere sia la parte client che server, il primo client che legge il file (quindi il file sarà vuoto) si eleggerà server e smisterà tutte le chiamate della chat, mentre la trasmissione dei dati (la chat deve permettere lo scambio di file tra i vari client) averrà aprendo un socket direttamente verso l'ip della persona che vuole il file, appena il server si sconnette lancia un messaggio che attiva un tempo di latenza (time out) random sui vari client, appena questo time out finisce la prima macchina che legge il file e verifica che non esiste un server si elegge server a sua volta (volendo si può creare una gerarchia di possibili server in base alla posizione nel file).
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.