Hvordan koden Chat programvare uten å bruke en database
Å vite hvordan å kode et chatterom uten å bruke en database kan hjelpe deg å lage en server / klientprogram uten å måtte bruke tid på å utforme en database. En chat-programmet er opprettet ved hjelp av to programmer, klienten og serveren. Serveren søknaden vil håndtere alle klienttilkoblinger å etablere kommunikasjon. Klientprogrammet installeres på hvilken som helst datamaskin som ønsker å koble til serveren for å chatte med andre kunder. Du kan opprette dette programmet ved hjelp av Microsoft Visual Basic.NET, også kjent som VB.NET.
Bruksanvisning
1 Åpne Microsoft Visual Basic Express, klikk på "Nytt prosjekt ..." på ruten til venstre på skjermen, og velg deretter "Console Application". Klikk på "OK".
2 Trykk "Ctrl" og "A", og trykk deretter på "Slett" for å fjerne alle eksisterende kode. Kopier og lim inn koden nedenfor i din "Module1.vb" for å lage serverprogrammet:
import System.Net.Sockets
importen System.Text
modul module1
Dim hshTbl As New Hashtable
Sub main ()
Dim svrSckt som ny TcpListener (8888)
Dim tClient Som TcpClient
Dim infntCntr As Integer
Dim CNTR As Integer
svrSckt.Start ()
msg ( "Server Startet for chatting ....")
CNTR = 0
infntCntr = 0
For infntCntr = 1 til 2
infntCntr = 1
cntr + = 1
tClient = svrSckt.AcceptTcpClient ()
Dim btsFrom (10024) As Byte
Dim clientData As String
Dim networkStream Som 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
kringkasting (clientData + "har sluttet", clientData, False)
msg (clientData + "har sluttet chat room")
Dim klient som ny handleClinet
client.startClient (tClient, clientData, hshTbl)
neste
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 kringkasting (ByVal msg As String, _
ByVal usrName As String, ByVal FLG As Boolean)
Dim dicEntry Som DictionaryEntry
For hver dicEntry I hshTbl
Dim broadcastSocket Som TcpClient
broadcastSocket = CTYPE (dicEntry.Value, TcpClient)
Dim broadcastStream Som NetworkStream = _
broadcastSocket.GetStream ()
Dim broadcastBytes Som [Byte] ()
Hvis flg = True Deretter
broadcastBytes = Encoding.ASCII.GetBytes (usrName + "sier:" + msg)
Ellers
broadcastBytes = Encoding.ASCII.GetBytes (msg)
Slutt om
broadcastStream.Write (broadcastBytes, 0, broadcastBytes.Length)
broadcastStream.Flush ()
neste
End Sub
Public Class handleClinet
Dim tClient Som TcpClient
Dim clNo As String
Dim hshTbl Som hashtabellen
Public Sub startClient (ByVal inClientSocket Som TcpClient, _
ByVal clnNum As String, ByVal hsTbl As hashtabellen)
Me.tClient = inClientSocket
Me.clNo = clnNum
Me.hshTbl = hsTbl
Dim ctThread Som Threading.Thread = Ny 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 Som [Byte] ()
Dim responseSrvr As String
Dim rCnt As String
rqstCnt = 0
For infntCntr = 1 til 2
infntCntr = 1
Prøve
rqstCnt = rqstCnt + 1
Dim networkStream Som NetworkStream = _
tClient.GetStream ()
networkStream.Read (btsFrom, 0, Cint (tClient.ReceiveBufferSize))
clientData = System.Text.Encoding.ASCII.GetString (btsFrom)
clientData = _
clientData.Substring (0, clientData.IndexOf ( "$"))
msg ( "Fra klient:" + clNo + ":" + clientData)
rCnt = Convert.ToString (rqstCnt)
kringkasting (clientData, clNo, sann)
Catch ex As Exception
MsgBox (ex.ToString)
End Try
neste
End Sub
End Class
End Module
3 Åpne en ny forekomst av Microsoft Visual Basic Express, klikk på "Nytt prosjekt ..." på ruten til venstre på skjermen, og velg deretter "Windows Forms Application". Klikk på "OK". Klikk på "Toolbox" ruten, og dobbeltklikk på "TextBox" for å legge til en ny tekstboks. Legg til to flere tekstbokser ved hjelp av samme metode. Legg til to knapper fra "Toolbox" -menyen.
4 Dobbeltklikk på Form, Trykk "Ctrl" og "A", og trykk deretter på "Slett" for å fjerne alle eksisterende kode. Kopier og lim inn koden nedenfor i din "Form1.vb" modul for å opprette klientprogrammet:
import System.Net.Sockets
importen System.Text
Public Class Form1
Dim clntSckt As New System.Net.Sockets.TcpClient()
Dim srvrStrm Som NetworkStream
Dim rddata As String
Dim infCntr As Integer
Private Sub button1_click (ByVal sender As System.Object, _
ByVal e As System.EventArgs) Håndtak 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 ()
Hvis Me.InvokeRequired Deretter
Me.Invoke (New MethodInvoker (AddressOf msg))
Ellers
TextBox1.Text = TextBox1.Text + Environment.NewLine + ">>" + rddata
Slutt om
End Sub
Private Sub Button2_Click (ByVal sender As System.Object, _
ByVal e As System.EventArgs) Håndtak Button2.Click
rddata = "conected å chatte 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 Som Threading.Thread = Ny Threading.Thread (AddressOf GetMessage)
ctThread.Start ()
End Sub
Private Sub GetMessage ()
For infCntr = 1 til 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 ()
neste
End Sub
End Class
5 Kjør tjenerprogrammet først ved å trykke "F5". Start klientprogrammet ved å trykke "F5". Skriv navnet ditt i "Textbox3," klikk "Button2" for å etablere en forbindelse med tjenerprogrammet.
6 Skriv en melding i "TextBox2," klikk "Button1" for å sende meldingen. Meldingen vil bli vist i utgangs Window of the server.