Come codice software Chat senza utilizzare un database

June 13

Come codice software Chat senza utilizzare un database


Sapendo come codificare una chat room senza l'utilizzo di una banca dati può aiutare a creare un'applicazione server / client senza dover spendere tempo progettazione di un database. Un programma di chat viene creato utilizzando due applicazioni, il client e il server. L'applicazione server si occuperà di tutte le connessioni client per stabilire la comunicazione. Il programma client viene installato in tutti i computer che desiderano connettersi al server di chattare con altri clienti. È possibile creare questa applicazione utilizzando Microsoft Visual Basic.NET, noto anche come VB.NET.

istruzione

1 Aprire Microsoft Visual Basic Express, fai clic su "Nuovo progetto ..." nel riquadro a sinistra dello schermo, quindi selezionare "Applicazione console." Fai clic su "OK".

2 Premere il tasto "Ctrl" e "A", quindi premere "Delete" per rimuovere tutto il codice esistente. Copia e incolla il codice qui sotto nel vostro "Module1.vb" per creare l'applicazione server:

Importazioni System.Net.Sockets

Imports System.Text

Module Module1

Dim hshTbl As New Hashtable

Sub Main ()

Dim svrSckt come nuovo TcpListener (8888)

Dim tClient Come TcpClient

Dim infntCntr As Integer

cntr Dim As Integer

svrSckt.Start ()

MSG ( "Server introduttiva per la chat ....")

cntr = 0

infntCntr = 0

Per infntCntr = 1 a 2

infntCntr = 1

cntr + 1 =

tClient = svrSckt.AcceptTcpClient ()

Dim btsFrom (10024) As Byte

Dim clientData As String

Dim NetworkStream Come NetworkStream = _

tClient.GetStream ()

networkStream.Read (btsFrom, 0, CInt (tClient.ReceiveBufferSize))

clientData = System.Text.Encoding.ASCII.GetString (btsFrom)

clientData = _

clientData.Substring (0, clientData.IndexOf ( "$"))

hshTbl (clientData) = tClient

broadcast (clientData + "ha aderito", clientData, False)

msg (clientData + "ha aderito chat room")

cliente fioco come nuovo handleClinet

client.startClient (tClient, clientData, hshTbl)

Il prossimo

tClient.Close ()

svrSckt.Stop ()

MSG ( "Exit")

Console.ReadLine ()

End Sub

msg secondario (ByVal msg As String)

msg.Trim ()

Console.WriteLine ( ">>" + msg)

End Sub

Private Sub broadcast (ByVal msg As String, _

ByVal usrname As String, ByVal FLG come booleano)

Dim dicEntry Come DictionaryEntry

Per ogni dicEntry In hshTbl

Dim broadcastSocket Come TcpClient

broadcastSocket = CType (dicEntry.Value, TcpClient)

Dim broadcastStream Come NetworkStream = _

broadcastSocket.GetStream ()

broadcastBytes fiochi come [Byte] ()

Se FLG = True Then

broadcastBytes = Encoding.ASCII.GetBytes (usrname + ", dice:" + msg)

Altro

broadcastBytes = Encoding.ASCII.GetBytes (msg)

Finisci se

broadcastStream.Write (broadcastBytes, 0, broadcastBytes.Length)

broadcastStream.Flush ()

Il prossimo

End Sub

Public Class handleClinet

Dim tClient Come TcpClient

Dim CLNO As String

Dim hshTbl Come Hashtable

Public Sub startClient (ByVal inClientSocket Come TcpClient, _

ByVal clnNum As String, ByVal hsTbl come Hashtable)

Me.tClient = inClientSocket

Me.clNo = clnNum

Me.hshTbl = hsTbl

Dim ctThread Come Threading.Thread = Nuovo Threading.Thread (AddressOf doChat)

ctThread.Start ()

End Sub

Private Sub doChat ()

Dim infntCntr As Integer

Dim rqstCnt As Integer

Dim btsFrom (10024) As Byte

Dim clientData As String

Dim btsSend Come [Byte] ()

Dim responseSrvr As String

Dim RCNT As String

rqstCnt = 0

Per infntCntr = 1 a 2

infntCntr = 1

Provare

rqstCnt = rqstCnt + 1

Dim NetworkStream Come NetworkStream = _

tClient.GetStream ()

networkStream.Read (btsFrom, 0, CInt (tClient.ReceiveBufferSize))

clientData = System.Text.Encoding.ASCII.GetString (btsFrom)

clientData = _

clientData.Substring (0, clientData.IndexOf ( "$"))

MSG ( "dal client:" + CLNO + ":" + clientData)

RCNT = Convert.ToString (rqstCnt)

broadcast (clientData, CLNO, True)

Fermo ex come eccezione

MsgBox (ex.ToString)

End Try

Il prossimo

End Sub

End Class

Modulo fine

3 Aprire una nuova istanza di Microsoft Visual Basic Express, fai clic su "Nuovo progetto ..." nel riquadro a sinistra dello schermo, quindi selezionare "Applicazione Windows Form." Fai clic su "OK". Fare clic sul riquadro "Toolbox", quindi fare doppio clic "TextBox" per aggiungere una nuova casella di testo. Aggiungere altri due caselle di testo utilizzando lo stesso metodo. Aggiungere due pulsanti dal menu "Strumenti".

4 Fare doppio clic sul modulo, premere il tasto "Ctrl" e "A", quindi premere "Delete" per rimuovere tutto il codice esistente. Copia e incolla il codice qui sotto nel vostro modulo "Form1.vb" per creare il programma client:

Importazioni System.Net.Sockets

Imports System.Text

Public Class Form1

Dim clntSckt As New System.Net.Sockets.TcpClient()

srvrStrm fioco come NetworkStream

Dim rddata As String

Dim infCntr As Integer

Private Sub Button1_Click (ByVal sender As System.Object, _

ByVal e come System.EventArgs) tratta Button1.Click

Dim streamOut As Byte () = _

System.Text.Encoding.ASCII.GetBytes (TextBox2.Text + "$")

srvrStrm.Write (streamOut, 0, streamOut.Length)

srvrStrm.Flush ()

End Sub

Private Sub msg ()

Se Me.InvokeRequired Poi

Me.Invoke (New MethodInvoker (AddressOf msg))

Altro

TextBox1.Text = TextBox1.Text + Environment.NewLine + ">>" + rddata

Finisci se

End Sub

Private Sub Button2_Click (ByVal sender As System.Object, _

ByVal e come System.EventArgs) tratta Button2.Click

rddata = "conected a chiacchierare server ..."

MSG ()

clntSckt.Connect ( "127.0.0.1", 8888)

srvrStrm = clntSckt.GetStream ()

Dim streamOut As Byte () = _

System.Text.Encoding.ASCII.GetBytes (TextBox3.Text + "$")

srvrStrm.Write (streamOut, 0, streamOut.Length)

srvrStrm.Flush ()

Dim ctThread Come Threading.Thread = Nuovo Threading.Thread (AddressOf getMessage)

ctThread.Start ()

End Sub

Private Sub getMessage ()

Per infCntr = 1 a 2

infCntr = 1

srvrStrm = clntSckt.GetStream ()

Dim buffSize As Integer

inStream Dim (10024) As Byte

buffSize = clntSckt.ReceiveBufferSize

srvrStrm.Read (inStream, 0, buffSize)

Dim returndata As String = _

System.Text.Encoding.ASCII.GetString (inStream)

rddata = "" + returndata

MSG ()

Il prossimo

End Sub

End Class

5 Eseguire il programma server prima premendo il tasto "F5". Avviare il programma client premendo il tasto "F5". Digitare il nome nella "Textbox3," quindi su "Button2" per stabilire una connessione con il programma server.

6 Digitare un messaggio nella "TextBox2," quindi su "Button1" per inviare il messaggio. Il messaggio verrà visualizzato nella finestra di output del server.