Att veta hur man koda ett chattrum utan att använda en databas kan hjälpa dig att skapa en server /klient program utan att behöva spendera tid på att designa en databas . Ett chattprogram skapas med hjälp av två program , klienten och servern . Servern ansökan kommer att hantera alla klientanslutningar att upprätta kommunikation . Klientprogrammet är installerat på alla datorer som vill ansluta till servern för att chatta med andra klienter . Du kan skapa denna applikation använder Microsoft Visual Basic.NET , även känd som VB.NET . Saker du behöver
Microsoft Visual Basic Express
Visa fler instruktioner
1
Öppna Microsoft Visual Basic Express , klicka på " Nytt projekt ... " i den vänstra rutan på skärmen och välj sedan " Console Application . " Klicka på " OK . "
2
Tryck " Ctrl " och " A ", tryck sedan på " Delete " för att ta bort all befintlig kod . Kopiera och klistra in koden nedan på din " Module1.vb " för att skapa serverprogrammet :
Import System.Net.Sockets
Import System.Text
Modul Module1
Dim hshTbl Som ny Hashtable
Sub Main ( ) katalog
Dim svrSckt Som New TcpListener ( 8888 ) katalog
Dim tClient Som TcpClient
Dim infntCntr As Integer
Dim cntr As Integer
svrSckt.Start ( ) katalog
msg ( " Server Started för att chatta .... " ) katalog
CNTR = 0
infntCntr = 0
För infntCntr = 1 Till 2 Review
infntCntr = 1
CNTR + = 1
tClient = svrSckt.AcceptTcpClient ( ) katalog
Dim btsFrom ( 10024 ) som byte
Dim clientData As String
Dim networkStream Som networkStream = _
tClient.GetStream ( ) katalog
networkStream.Read ( btsFrom , 0 , CInt ( tClient.ReceiveBufferSize ) ) katalog
clientData = System.Text.Encoding.ASCII.GetString ( btsFrom ) katalog
clientData = _
clientData.Substring ( 0 , ( " $ " ) clientData.IndexOf ) katalog
hshTbl ( clientData ) = tClient
sändning ( clientData + " har gått " , clientData , False ) katalog
msg ( clientData + " har gått chattrum " ) katalog
Dim klient som ny handleClinet
client.startClient ( tClient , clientData , Sub
Sub msg ( ByVal msg As String ) katalog
msg.Trim ( ) katalog
Console.WriteLine ( " >> " + msg ) katalog
End Sub
Private Sub sändning ( ByVal msg As String , _
ByVal usrName As String , ByVal flg As Boolean ) katalog
Dim dicEntry Som DictionaryEntry
För varje dicEntry I hshTbl
Dim broadcastSocket Som TcpClient
broadcastSocket = ctyp ( dicEntry.Value , TcpClient ) katalog
Dim broadcastStream Som NetworkStream = _
broadcastSocket.GetStream ( ) katalog
Dim broadcastBytes Som [ byte ] ( ) katalog p Om flg = sant då
broadcastBytes = Encoding.ASCII.GetBytes ( usrName + " säger : " + msg ) katalog
Else
broadcastBytes = Encoding.ASCII.GetBytes ( msg ) katalog
End Om
broadcastStream.Write ( broadcastBytes , 0 , broadcastBytes . längd ) katalog
broadcastStream.Flush ( ) katalog
Nästa
End Sub
Public Class handleClinet
Dim tClient Som TcpClient
Dim clNo As String
Dim hshTbl Som Hashtable
Public Sub startClient ( ByVal inClientSocket Som TcpClient , _
ByVal clnNum As String , ByVal hsTbl Som Hashtable )
Me.tClient = inClientSocket
Me.clNo = clnNum
Me.hshTbl = hsTbl
Dim ctThread Som Threading.Thread = Ny Threading.Thread ( AddressOf doChat ) katalog
ctThread.Start ( ) katalog
End Sub
Private Sub doChat ( ) katalog
Dim infntCntr As Integer
Dim rqstCnt As Integer
Dim btsFrom ( 10024 ) som byte
Dim clientData As String
Dim btsSend Som [ byte ] ( ) katalog
Dim responseSrvr As String
Dim rCnt As String
rqstCnt = 0
För infntCntr = 1 Till 2 Review
infntCntr = 1
Prova
rqstCnt = rqstCnt + 1
Dim networkStream Som networkStream = _
tClient.GetStream ( ) katalog
networkStream.Read ( btsFrom , 0 , CInt ( tClient.ReceiveBufferSize ) ) katalog
clientData = System.Text.Encoding.ASCII.GetString ( btsFrom ) katalog
clientData = _
clientData.Substring 0 ( , clientData.IndexOf ( " $ " ) ) katalog
msg ( " From klient : " + clNo + " : " + clientData ) katalog
rCnt = Convert.ToString ( rqstCnt ) katalog
broadcast ( clientData , clNo , sant)
Fånga ex Som Exception
MsgBox ( ex.ToString ) katalog
End Försök
Nästa
End Sub
End Class
ändmodul
3
Öppna en ny instans av Microsoft Visual Basic Express , klicka på " nytt projekt ... " på den vänstra rutan i din skärmen och välj sedan " Windows Forms Application . " Klicka på " OK . " Klicka på " Verktyg" rutan , dubbelklicka sedan på " TextBox " för att lägga till en ny textruta . Lägg två textrutor med samma metod . Lägg två knappar från "Toolbox " -menyn .
4
Dubbelklicka på Form , Tryck på " Ctrl " och " A ", tryck sedan på " Delete " för att ta bort all befintlig kod . Kopiera och klistra in koden nedan i din " Form1.vb " modul för att skapa klientprogrammet :
Import System.Net.Sockets
Import System.Text
Public Class Form1
Dim clntSckt Som New System.Net.Sockets.TcpClient ( ) katalog
Dim srvrStrm Som NetworkStream
Dim rddata As String
Dim infCntr As Integer
Private Sub Button1_Click ( ByVal avsändaren som System.Object , _
ByVal e Som System.EventArgs ) Handtag Button1.Click
Dim streamOut Som byte ( ) = _
System.Text . Encoding.ASCII.GetBytes ( TextBox2.Text + " $ " ) katalog
srvrStrm.Write ( streamOut , 0 , streamOut.Length ) katalog
srvrStrm.Flush ( ) katalog
End Sub
Private Sub msg ( ) katalog p Om Me.InvokeRequired Sedan
Me.Invoke ( New MethodInvoker ( AddressOf msg ) ) katalog
Else
TextBox1.Text = TextBox1.Text + Environment.NewLine + " >> " + rddata
End If
End Sub
Private Sub Button2_Click ( ByVal avsändare som System.Object , Handtag _
ByVal e som System.EventArgs ) Button2.Click
rddata = " conected att chatta server ... "
msg ( ) katalog
clntSckt.Connect ( " 127.0.0.1 " , 8888 ) katalog
srvrStrm = clntSckt.GetStream ( ) katalog
Dim streamOut Som byte ( ) = _
System.Text.Encoding.ASCII.GetBytes ( TextBox3.Text + " $ " ) katalog
srvrStrm.Write ( streamOut , 0 , streamOut.Length ) katalog
srvrStrm.Flush ( )
Dim ctThread Som Threading.Thread = Ny Threading.Thread ( AddressOf getMessage ) katalog
ctThread.Start ( ) katalog
End Sub
Private Sub getMessage ( )
För infCntr = 1 Till 2 Review
infCntr = 1
srvrStrm = clntSckt.GetStream ( ) katalog
Dim buffSize As Integer
Dim Instream ( 10024 ) As byte
buffSize = clntSckt.ReceiveBufferSize
srvrStrm.Read ( minimi , 0 , buffSize ) katalog
Dim returndata As String = _
System.Text.Encoding.ASCII.GetString ( Instream ) katalog
rddata = " " + returndata
msg ( ) katalog
Nästa
End Sub
End Class
5
köra servern programmet först genom att trycka på " F5 ". Starta klientprogrammet genom att trycka på " F5 ". Skriv ditt namn i " Textbox3 , " klicka sedan på " button2 " för att upprätta en anslutning till servern programmet .
6
Skriv ett meddelande i " TextBox2 , " klicka sedan på " Button1 " för att skicka ditt meddelande . meddelandet visas i utdata Fönster av server . Addera