Oppure

Loading
30/11/12 15:20
tuttodiMC
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?
aaa
30/11/12 17:05
Roby94
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.
aaa
30/11/12 20:01
R0gerBlack
Ciao,

potresti dare un'occhiata al mio sorgente

pierotofy.it/pages/sorgenti/dettagli/18631-Desktop_MyChat/

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.
aaa
01/12/12 14:20
tuttodiMC
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 01/12/12 15:25
aaa
01/12/12 21:01
R0gerBlack
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

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


Per riceverlo invece


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


RichTextBox1 è ovviamente l'elemento principale che accomuna le due chat dove puoi visualizzare i messaggi.
aaa
02/12/12 14:54
tuttodiMC
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 02/12/12 15:00
aaa
11/12/12 14:39
R0gerBlack
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.
aaa