June 13
Sapendo come codificare una chat room senza l'utilizzo di una banca dati può aiutare a creare un'applicazione server / client senza dover spendere tempo progettazione di un database. Un programma di chat viene creato utilizzando due applicazioni, il client e il server. L'applicazione server si occuperà di tutte le connessioni client per stabilire la comunicazione. Il programma client viene installato in tutti i computer che desiderano connettersi al server di chattare con altri clienti. È possibile creare questa applicazione utilizzando Microsoft Visual Basic.NET, noto anche come VB.NET.
1 Aprire Microsoft Visual Basic Express, fai clic su "Nuovo progetto ..." nel riquadro a sinistra dello schermo, quindi selezionare "Applicazione console." Fai clic su "OK".
2 Premere il tasto "Ctrl" e "A", quindi premere "Delete" per rimuovere tutto il codice esistente. Copia e incolla il codice qui sotto nel vostro "Module1.vb" per creare l'applicazione server:
Importazioni System.Net.Sockets
Imports System.Text
Module Module1
Dim hshTbl As New Hashtable
Sub Main ()
Dim svrSckt come nuovo TcpListener (8888)
Dim tClient Come TcpClient
Dim infntCntr As Integer
cntr Dim As Integer
svrSckt.Start ()
MSG ( "Server introduttiva per la chat ....")
cntr = 0
infntCntr = 0
Per infntCntr = 1 a 2
infntCntr = 1
cntr + 1 =
tClient = svrSckt.AcceptTcpClient ()
Dim btsFrom (10024) As Byte
Dim clientData As String
Dim NetworkStream Come 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 + "ha aderito", clientData, False)
msg (clientData + "ha aderito chat room")
cliente fioco come nuovo handleClinet
client.startClient (tClient, clientData, hshTbl)
Il prossimo
tClient.Close ()
svrSckt.Stop ()
MSG ( "Exit")
Console.ReadLine ()
End Sub
msg secondario (ByVal msg As String)
msg.Trim ()
Console.WriteLine ( ">>" + msg)
End Sub
Private Sub broadcast (ByVal msg As String, _
ByVal usrname As String, ByVal FLG come booleano)
Dim dicEntry Come DictionaryEntry
Per ogni dicEntry In hshTbl
Dim broadcastSocket Come TcpClient
broadcastSocket = CType (dicEntry.Value, TcpClient)
Dim broadcastStream Come NetworkStream = _
broadcastSocket.GetStream ()
broadcastBytes fiochi come [Byte] ()
Se FLG = True Then
broadcastBytes = Encoding.ASCII.GetBytes (usrname + ", dice:" + msg)
Altro
broadcastBytes = Encoding.ASCII.GetBytes (msg)
Finisci se
broadcastStream.Write (broadcastBytes, 0, broadcastBytes.Length)
broadcastStream.Flush ()
Il prossimo
End Sub
Public Class handleClinet
Dim tClient Come TcpClient
Dim CLNO As String
Dim hshTbl Come Hashtable
Public Sub startClient (ByVal inClientSocket Come TcpClient, _
ByVal clnNum As String, ByVal hsTbl come Hashtable)
Me.tClient = inClientSocket
Me.clNo = clnNum
Me.hshTbl = hsTbl
Dim ctThread Come Threading.Thread = Nuovo 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 Come [Byte] ()
Dim responseSrvr As String
Dim RCNT As String
rqstCnt = 0
Per infntCntr = 1 a 2
infntCntr = 1
Provare
rqstCnt = rqstCnt + 1
Dim NetworkStream Come NetworkStream = _
tClient.GetStream ()
networkStream.Read (btsFrom, 0, CInt (tClient.ReceiveBufferSize))
clientData = System.Text.Encoding.ASCII.GetString (btsFrom)
clientData = _
clientData.Substring (0, clientData.IndexOf ( "$"))
MSG ( "dal client:" + CLNO + ":" + clientData)
RCNT = Convert.ToString (rqstCnt)
broadcast (clientData, CLNO, True)
Fermo ex come eccezione
MsgBox (ex.ToString)
End Try
Il prossimo
End Sub
End Class
Modulo fine
3 Aprire una nuova istanza di Microsoft Visual Basic Express, fai clic su "Nuovo progetto ..." nel riquadro a sinistra dello schermo, quindi selezionare "Applicazione Windows Form." Fai clic su "OK". Fare clic sul riquadro "Toolbox", quindi fare doppio clic "TextBox" per aggiungere una nuova casella di testo. Aggiungere altri due caselle di testo utilizzando lo stesso metodo. Aggiungere due pulsanti dal menu "Strumenti".
4 Fare doppio clic sul modulo, premere il tasto "Ctrl" e "A", quindi premere "Delete" per rimuovere tutto il codice esistente. Copia e incolla il codice qui sotto nel vostro modulo "Form1.vb" per creare il programma client:
Importazioni System.Net.Sockets
Imports System.Text
Public Class Form1
Dim clntSckt As New System.Net.Sockets.TcpClient()
srvrStrm fioco come NetworkStream
Dim rddata As String
Dim infCntr As Integer
Private Sub Button1_Click (ByVal sender As System.Object, _
ByVal e come System.EventArgs) tratta 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 ()
Se Me.InvokeRequired Poi
Me.Invoke (New MethodInvoker (AddressOf msg))
Altro
TextBox1.Text = TextBox1.Text + Environment.NewLine + ">>" + rddata
Finisci se
End Sub
Private Sub Button2_Click (ByVal sender As System.Object, _
ByVal e come System.EventArgs) tratta Button2.Click
rddata = "conected a chiacchierare 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 Come Threading.Thread = Nuovo Threading.Thread (AddressOf getMessage)
ctThread.Start ()
End Sub
Private Sub getMessage ()
Per infCntr = 1 a 2
infCntr = 1
srvrStrm = clntSckt.GetStream ()
Dim buffSize As Integer
inStream Dim (10024) As Byte
buffSize = clntSckt.ReceiveBufferSize
srvrStrm.Read (inStream, 0, buffSize)
Dim returndata As String = _
System.Text.Encoding.ASCII.GetString (inStream)
rddata = "" + returndata
MSG ()
Il prossimo
End Sub
End Class
5 Eseguire il programma server prima premendo il tasto "F5". Avviare il programma client premendo il tasto "F5". Digitare il nome nella "Textbox3," quindi su "Button2" per stabilire una connessione con il programma server.
6 Digitare un messaggio nella "TextBox2," quindi su "Button1" per inviare il messaggio. Il messaggio verrà visualizzato nella finestra di output del server.