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.