Wie man Code-Chat-Software ohne Verwendung einer Datenbank

March 14

Wie man Code-Chat-Software ohne Verwendung einer Datenbank

Zu wissen, wie einem Chat Room code ohne Verwendung einer Datenbank hilft Ihnen eine Server/Client-Anwendung zu erstellen, ohne Zeit für den Entwurf einer Datenbank ausgeben. Ein Chat-Programm wird mit zwei Anwendungen, dem Client und dem Server erstellt. Die Server-Anwendung behandelt alle Client-Verbindungen, um die Kommunikation herzustellen. Das Clientprogramm installiert ist in jedem Computer, die Verbindung zum Server mit anderen Clients chatten wollen. Sie können diese Anwendung mit Microsoft Visual Basic, auch bekannt als VB erstellen.

Anweisungen

1 Öffnen Sie Microsoft Visual Basic Express "New Project..." im linken Bereich des Bildschirms, und wählen Sie "Console Application" Klicken Sie auf "OK".

2 Drücken Sie "Strg" und "A" und dann "Löschen", um alle vorhandenen Code zu entfernen. Kopieren Sie und fügen Sie den folgenden Code in Ihre "Module1.vb" erstellen Sie die Serveranwendung:

System.net.Sockets..:: importiert

Imports System.Text

Modul Modul1

Dim hshTbl As New Hashtable

Sub Main()

Dim svrSckt As New TcpListener(8888)

Dim tClient As TcpClient

Dim infntCntr As Integer

Dim cntr As Integer

svrSckt.Start()

msg("Server Started for chatting....")

cntr = 0

infntCntr = 0

For infntCntr = 1 To 2

infntCntr = 1

cntr += 1

tClient = svrSckt.AcceptTcpClient()

Dim btsFrom(10024) As Byte

Dim clientData As String

Dim networkStream As 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 + " has joined ", clientData, False)

msg(clientData + " has joined chat room ")

Dim client As New handleClinet

client.startClient(tClient, clientData, hshTbl)

Next

tClient.Close()

svrSckt.Stop()

msg("Exit")

Console.ReadLine()

End Sub

Sub msg(ByVal msg As String)

msg.Trim()

Console.WriteLine(" >> " + msg)

End Sub

Private Sub broadcast(ByVal msg As String, _

ByVal usrName As String, ByVal flg As Boolean)

Dim dicEntry As DictionaryEntry

For Each dicEntry In hshTbl

Dim broadcastSocket As TcpClient

broadcastSocket = CType(dicEntry.Value, TcpClient)

Dim broadcastStream As NetworkStream = _

broadcastSocket.GetStream()

Dim broadcastBytes As [Byte]()

If flg = True Then

broadcastBytes = Encoding.ASCII.GetBytes(usrName + " says: " + msg)

Else

broadcastBytes = Encoding.ASCII.GetBytes(msg)

End If

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

broadcastStream.Flush()

Next

End Sub

Public Class handleClinet

Dim tClient As TcpClient

Dim clNo As String

Dim hshTbl As Hashtable

Public Sub startClient(ByVal inClientSocket As TcpClient, _

ByVal clnNum As String, ByVal hsTbl As Hashtable)

Me.tClient = inClientSocket

Me.clNo = clnNum

Me.hshTbl = hsTbl

Dim ctThread As Threading.Thread = New 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 As [Byte]()

Dim responseSrvr As String

Dim rCnt As String

rqstCnt = 0

For infntCntr = 1 To 2

infntCntr = 1

Try

rqstCnt = rqstCnt + 1

Dim networkStream As NetworkStream = _

tClient.GetStream()

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

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

clientData = _

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

msg("From client: " + clNo + " : " + clientData)

rCnt = Convert.ToString(rqstCnt)

broadcast(clientData, clNo, True)

Catch ex As Exception

MsgBox(ex.ToString)

End Try

Next

End Sub

End Class

Ende-Modul

3 Öffnen Sie eine neue Instanz von Microsoft Visual Basic Express "New Project..." im linken Bereich des Bildschirms, und wählen Sie "Windows-Forms-Anwendung." Klicken Sie auf "OK". Klicken Sie im Bereich "Toolbox", dann Doppelklick "TextBox" ein neues Textfeld hinzu. Fügen Sie zwei weitere Textfelder mit der gleichen Methode. Fügen Sie zwei Schaltflächen im Menü "Toolbox".

4 Doppelklicken Sie auf das Formular, drücken Sie "Strg" und "A" und dann "Löschen", um alle vorhandenen Code zu entfernen. Kopieren Sie und fügen Sie den folgenden Code in Ihr "Form1.vb"-Modul, um das Client-Programm zu erstellen:

System.net.Sockets..:: importiert

Imports System.Text

Public Class Form1

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

Dim srvrStrm As NetworkStream

Dim rddata As String

Dim infCntr As Integer

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

ByVal e As System.EventArgs) Handles 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()

If Me.InvokeRequired Then

Me.Invoke(New MethodInvoker(AddressOf msg))

Else

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

End If

End Sub

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

ByVal e As System.EventArgs) Handles Button2.Click

rddata = "Conected to chat 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 As Threading.Thread = New Threading.Thread(AddressOf getMessage)

ctThread.Start()

End Sub

Private Sub getMessage()

For infCntr = 1 To 2

infCntr = 1

srvrStrm = clntSckt.GetStream()

Dim buffSize As Integer

Dim inStream(10024) As Byte

buffSize = clntSckt.ReceiveBufferSize

srvrStrm.Read(inStream, 0, buffSize)

Dim returndata As String = _

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

rddata = "" + returndata

msg()

Next

End Sub

End-Klasse

5 Führen Sie das Serverprogramm zuerst mit "F5". Starten Sie das Clientprogramm mit "F5". Geben Sie Ihren Namen in "Textbox3" und dann auf "Button2" herstellen eine Verbindung mit dem Serverprogramm.

6 Typ einer Nachricht in "TextBox2" und klicken dann auf "Button1" um Ihre Nachricht zu senden. Die Nachricht erscheint in der Ausgabe-Fenster dieses Servers.