Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Creare chat
Forum - C# / VB.NET - [VB.NET] Creare chat

Avatar
tuttodiMC (Normal User)
Expert


Messaggi: 318
Iscritto: 29/10/2012

Segnala al moderatore
Postato alle 16:20
Venerdì, 30/11/2012
Salve a tutti. Come faccio a creare una chat in vb.net? Ho una guida sul winsock e penso che sia attendibile. Il problema è: dove scrivo i messaggi che vengono inviati? Come li visualizzo?


Assembly is the way
PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1127
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 18:05
Venerdì, 30/11/2012
Lo sviluppo di un sistema di chat non è un argomento semplicissimo. Devi conoscere bene i websocket le interazioni tra server e client.
Comunque principalmente si tratta di un server in ascolto su una determinata porta che ogni volta riceve una connessione da un client lo aggiunge ad una lista di utenti e quando riceve un messaggio da essi lo rinvia a tutti gli altri utenti archiviati nella lista.


La programmazione è arte... fa che i tuoi script siano degni di un museo.
PM Quote
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Segnala al moderatore
Postato alle 21:01
Venerdì, 30/11/2012
Ciao,

potresti dare un'occhiata al mio sorgente

http://www.pierotofy.it/pages/sorgenti/dettagli/18631-Desk ...

L'ho fatto qualche anno fa e il codice è un po' ingarbugliato ma dovresti essere in grado di capire il funzionamento insieme alle guide.

Comunque ricorda di autorizzare le porte del router o non ti funzionerà quando invece va tutto bene.


Volere è potere.

Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]
PM Quote
Avatar
tuttodiMC (Normal User)
Expert


Messaggi: 318
Iscritto: 29/10/2012

Segnala al moderatore
Postato alle 15:20
Sabato, 01/12/2012
Allora la chat che voglio realizzare è fatta per 2 persone: per me e un mio amico, quindi non mi serve una complessità enorme di codice, solo che ho bisogno di sapere quali passaggi logici devo fare e dove faccio comparire il messaggio inviato. Grazie R0gerblack è molto utile ma dovresti spiegarmela

Ultima modifica effettuata da tuttodiMC il 01/12/2012 alle 16:25


Assembly is the way
PM Quote
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Segnala al moderatore
Postato alle 22:01
Sabato, 01/12/2012
La chat che ho fatto io è per due persone... è molto più complesso farne per più, ti spiego perché.

Connessione tra due persone
Client - Server (anche se nei servizi di messaggistica sono due client che si appoggiano a un server)

Connessione tra più di due persone
Client Client Client .....
    \        |       /
        SERVER

Beh, se sei riuscito a stabilire la connessione (Sockets e tutti i Timer necessari) per inviare i messaggi devi usare questo codice

Codice sorgente - presumibilmente VB.NET

  1. If Client.Connected Then
  2.                 If NetStr.CanWrite Then
  3.                     'Codifica il messaggio in byte e invialo
  4.                     Dim Bytes() As Byte = System.Text.ASCIIEncoding.ASCII.GetBytes(txtMESSAGGIO.Text)
  5.                     NetStr.Write(Bytes, 0, Bytes.Length)
  6.                     'Notifica a te stesso del messaggio inviato oltre che il destinatario
  7.                     RichTextBox1.AppendText(Environment.NewLine + "[" + Ora + "] " + txtNOME.Text & " scrive: " + txtMESSAGGIO.Text)
  8.                 End If
  9.             Else
  10.                 MsgBox("Client non connesso", MsgBoxStyle.Critical)
  11.             End If



Per riceverlo invece

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  2.         Dim Bytex(Client.ReceiveBufferSize) As Byte
  3.         NetStr.Read(Bytex, 0, Client.ReceiveBufferSize)
  4.         Dim z As String = System.Text.ASCIIEncoding.ASCII.GetString(Bytex)
  5.         txtByte.Text = z
  6.         Data.Start()
  7.         Timer2.Stop()
  8.         RichTextBox1.ScrollToCaret()
  9.     End Sub



RichTextBox1 è ovviamente l'elemento principale che accomuna le due chat dove puoi visualizzare i messaggi.


Volere è potere.

Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]
PM Quote
Avatar
tuttodiMC (Normal User)
Expert


Messaggi: 318
Iscritto: 29/10/2012

Segnala al moderatore
Postato alle 15:54
Domenica, 02/12/2012
Molto bene solo che non ho capito il funzionamento dei timer. C'è solo un problema: come mai non mi avvia il debug? mi dice che non riesce a compilarlo e mi chiede se voglio avviare una vecchia compilazione (che non è mai avvenuta).
Inoltre come faccio per far disconnettere?

Poi, come faccio a permettere le porte alla adsl?

Per il server cosa devo fare? Devo crearlo oppure no?

Scusa la mia ignoranza è che il VB.NET nella mia testa è ancora ai fondamenti.

Ultima modifica effettuata da tuttodiMC il 02/12/2012 alle 16:00


Assembly is the way
PM Quote
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Segnala al moderatore
Postato alle 15:39
Martedì, 11/12/2012
Scusa se non ti ho risposto prima, comunque assicurati di reinizializzare tutto per disconnettere. Se il compilatore non ti fa avviare il Debug è perché hai errori nel codice (abilita l'Error list per scoprirli tutti).

Per le porte dell'ADSL devi vedere dal pannello di Admin della rete configurata, ma ti consiglio di lavorare dentro la tua stessa rete finché non ti funziona.


Volere è potere.

Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]
PM Quote