Vide, hvordan man kode et chatrum uden at bruge en database kan hjælpe dig med at oprette en server /klient applikation uden at skulle bruge tid på at designe en database. En chat -program er skabt ved hjælp af to ansøgninger , at klienten og serveren . Serveren ansøgning vil håndtere alle klient-forbindelser at etablere kommunikation . Klienten programmet installeres i enhver computer ønsker at oprette forbindelse til serveren for at chatte med andre kunder. Du kan oprette denne ansøgning ved hjælp af Microsoft Visual Basic.NET , også kendt som VB.NET . Ting du skal
Microsoft Visual Basic Express
Vis Flere Instruktioner
1
Åbn Microsoft Visual Basic Express, klik på " Nyt projekt ... " på den venstre rude på skærmen , og vælg derefter "Console Application ". Klik på "OK".
2
Tryk på " Ctrl" og "A ", tryk derefter på "Slet " for at fjerne alle eksisterende kode. Kopier og indsæt koden nedenfor ind i din " Module1.vb " for at oprette server program:
Import System.Net.Sockets
Import System.Text
Modul Module1 < br >
Dim hshTbl Som New Hashtable
Sub Main ( )
Dim svrSckt Da New TcpListener ( 8888)
Dim tClient Som tcpclient
Dim infntCntr As Integer
Dim cntr As Integer
svrSckt.Start ()
msg ( " Server Startet til at chatte ...." )
TÆLLER = 0
infntCntr = 0
infntCntr = 1 Til 2
infntCntr = 1
cntr + = 1
tClient = svrSckt.AcceptTcpClient ()
Dim btsFrom ( 10024 ) Som 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
broadcast ( clientData + " har sluttet " clientData , False )
msg ( clientData + " har sluttet chatrum " )
Dim klient Da New handleClinet
client.startClient ( tClient , clientData , Sub
Sub msg ( ByVal msg As String )
msg.Trim ()
Console.WriteLine ( ">> " + msg )
< p > End Sub
Private Sub broadcast ( ByVal msg As String , _
ByVal usrName As String , ByVal flg Som Boolean )
Dim dicEntry Som DictionaryEntry
< p > For Each dicEntry I hshTbl
Dim broadcastSocket Som tcpclient
broadcastSocket = ctype ( dicEntry.Value , tcpclient )
Dim broadcastStream Som NetworkStream = _
broadcastSocket.GetStream ()
Dim broadcastBytes Som [ Byte ] ()
p Hvis flg = Ægte Så
broadcastBytes = Encoding.ASCII.GetBytes ( usrName + "siger: " + msg )
Else
broadcastBytes = Encoding.ASCII.GetBytes (MSG )
End Hvis
broadcastStream.Write ( broadcastBytes , 0 , broadcastBytes . længde)
broadcastStream.Flush ()
Næste
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 hashtabelsamling ) < br >
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 ) Som Byte
Dim clientData As String
Dim btsSend Som [ Byte ] ()
Dim responseSrvr As String
Dim rCnt As String
rqstCnt = 0
infntCntr = 1 Til 2
infntCntr = 1
Prøv
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 ( "From klient :" + clNo + " :" + clientData )
rCnt = Convert.ToString ( rqstCnt )
broadcast ( clientData , clNo , sand)
Fang ex Som Exception
MsgBox ( ex.ToString )
End Prøv
Næste
End Sub
End Class
End Module
3
Åbn en ny forekomst af Microsoft Visual Basic Express , klik på " nyt projekt ... " i venstre rude af din skærmen , og vælg derefter "Windows Forms Application ". Klik på "OK". Klik på " Toolbox" rude dobbeltklik derefter på " TextBox " for at tilføje en ny tekstboks. Tilføj yderligere to tekstbokse ved hjælp af samme metode. Tilføj to knapper fra "Toolbox "-menuen.
4
Dobbeltklik på formular , Tryk på " Ctrl" og "A ", tryk derefter på "Slet " for at fjerne alle eksisterende kode. Kopier og indsæt koden nedenfor ind i din " Form1.vb "-modulet til at oprette klient program :
Import System.Net.Sockets
Import System.Text
Public Class Form1
Dim clntSckt As New System.Net.Sockets.TcpClient ()
Dim srvrStrm Som NetworkStream
Dim rddata As String
Dim infCntr Som Integer
Private Sub Button1_Click ( ByVal afsender Som System.Object , _
ByVal e Som System.EventArgs ) Handles Button1.Click
Dim streamOut Som Byte () = _
System.Text . Encoding.ASCII.GetBytes ( TextBox2.Text + "$" )
srvrStrm.Write ( streamOut , 0, streamOut.Length )
srvrStrm.Flush ()
End Sub
Private Sub msg ()
p Hvis Me.InvokeRequired Så
Me.Invoke (New MethodInvoker ( AddressOf msg ) )
Else < br >
TextBox1.Text = TextBox1.Text + Environment.NewLine + ">> " + rddata
End If
End Sub
Private Sub Button2_Click ( ByVal afsender Som System.Object , _
ByVal e Som System.EventArgs ) Handles Button2.Click
rddata = " conected at chatte server ... "
msg ( )
clntSckt.Connect ( " 127.0.0.1 " , 8888)
srvrStrm = clntSckt.GetStream ()
Dim streamOut Som Byte () = _
< p> System.Text.Encoding.ASCII.GetBytes ( TextBox3.Text + "$" )
srvrStrm.Write ( streamOut , 0, streamOut.Length )
srvrStrm.Flush () < br >
Dim ctThread Som Threading.Thread = Ny Threading.Thread ( AddressOf GetMessage )
ctThread.Start ()
End Sub
Private Sub GetMessage ()
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 = _
< p> System.Text.Encoding.ASCII.GetString ( Instream )
rddata = "" + returndata
msg ()
Næste
End Sub
End Class
5
Kør server program først ved at trykke på " F5 ". Start klient programmet ved at trykke på "F5 ". Skriv dit navn i " Textbox3 " og derefter klikke på " button2 "for at oprette en forbindelse til serveren program.
6
Skriv en besked i " TextBox2 "og derefter klikke på" Button1 "for at sende din besked . beskeden vil blive vist i outputtet Window of the server.