March 17
Avere la conoscenza di come creare una chat room utilizzando Microsoft Visual Basic Express può risparmiare tempo quando è necessario creare un'applicazione chat room. Visual Basic Express è disponibile gratuitamente a chiunque sia interessato nella creazione di applicazioni utilizzando VB.NET. Una chat room coinvolge due applicazioni, il server e il client. Il server gestisce tutte le connessioni client, e l'applicazione client si connette gli utenti alla sala server per inviare i messaggi.
1 Avviare Microsoft Visual Basic Express, e quindi fare clic su "Nuovo progetto". Nel riquadro a sinistra dello schermo, selezionare "Applicazione console." Fai clic su "OK".
2 Premere il tasto "Ctrl" + "A", e quindi premere il tasto "Elimina". Copia e incolla il seguente codice nel tuo "Module1.vb" per creare il programma server:
Importazioni System.Net.Sockets
Imports System.Text
Module Module1
Dim clientsList As New Hashtable
Sub Main ()
serverSocket fioco come nuovo TcpListener (8888)
Dim clientSocket Come TcpClient
Dim infiniteCounter As Integer
contatore fioco come Integer
serverSocket.Start ()
MSG ( "Chat Server introduttiva ....")
contatore = 0
infiniteCounter = 0
Per infiniteCounter = 1 a 2
infiniteCounter = 1
contatore + 1 =
clientSocket = serverSocket.AcceptTcpClient ()
bytesFrom Dim (10024) As Byte
Dim dataFromClient As String
Dim NetworkStream Come NetworkStream = _
clientSocket.GetStream ()
networkStream.Read (bytesFrom, 0, CInt (clientSocket.ReceiveBufferSize))
dataFromClient = System.Text.Encoding.ASCII.GetString (bytesFrom)
dataFromClient = _
dataFromClient.Substring (0, dataFromClient.IndexOf ( "$"))
clientsList (dataFromClient) = clientSocket
broadcast (dataFromClient + "iscrizione", dataFromClient, False)
msg (dataFromClient + "Iscritto chat room")
cliente fioco come nuovo handleClinet
client.startClient (clientSocket, dataFromClient, clientsList)
Il prossimo
clientSocket.close ()
serverSocket.Stop ()
MSG ( "uscita")
Console.ReadLine ()
End Sub
msg secondario (ByVal mesg As String)
mesg.Trim ()
Console.WriteLine ( ">>" + mesg)
End Sub
Private Sub broadcast (ByVal msg As String, _
ByVal uname As String, ByVal segnala come booleano)
Articolo fioco come DictionaryEntry
Per ogni elemento in clientsList
Dim broadcastSocket Come TcpClient
broadcastSocket = CType (Item.Value, TcpClient)
Dim broadcastStream Come NetworkStream = _
broadcastSocket.GetStream ()
broadcastBytes fiochi come [Byte] ()
Se il flag = True Then
broadcastBytes = Encoding.ASCII.GetBytes (uname + ", 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 clientSocket Come TcpClient
Dim CLNO As String
clientsList fioco come Hashtable
Public Sub startClient (ByVal inClientSocket Come TcpClient, _
ByVal clineNo As String, ByVal clist come Hashtable)
Me.clientSocket = inClientSocket
Me.clNo = clineNo
Me.clientsList = CLIST
Dim ctThread Come Threading.Thread = Nuovo Threading.Thread (AddressOf doChat)
ctThread.Start ()
End Sub
Private Sub doChat ()
Dim infiniteCounter As Integer
Dim requestCount As Integer
bytesFrom Dim (10024) As Byte
Dim dataFromClient As String
Dim sendBytes Come [Byte] ()
serverResponse Dim As String
Dim RCount As String
requestCount = 0
Per infiniteCounter = 1 a 2
infiniteCounter = 1
Provare
requestCount = requestCount + 1
Dim NetworkStream Come NetworkStream = _
clientSocket.GetStream ()
networkStream.Read (bytesFrom, 0, CInt (clientSocket.ReceiveBufferSize))
dataFromClient = System.Text.Encoding.ASCII.GetString (bytesFrom)
dataFromClient = _
dataFromClient.Substring (0, dataFromClient.IndexOf ( "$"))
MSG ( "dal client -" + CLNO + ":" + dataFromClient)
RCount = Convert.ToString (requestCount)
broadcast (dataFromClient, CLNO, True)
Fermo ex come eccezione
MsgBox (ex.ToString)
End Try
Il prossimo
End Sub
End Class
Modulo fine
3 Avviare Microsoft Visual Basic Express, e quindi fare clic su "Nuovo progetto". Nel riquadro a sinistra dello schermo, selezionare "Applicazione Windows Form." Fai clic su "OK". Fare clic sul riquadro "Toolbox", e poi "TextBox"-fare doppio clic per aggiungere una nuova casella di testo. Aggiungere altri due caselle di testo. Aggiungere due pulsanti dal menu "Strumenti".
4 Fare doppio clic sul modulo e quindi premere il tasto "Ctrl" + "A." Premere il tasto "Elimina". Copia e incolla il seguente codice nel modulo "Form1.vb" per creare il programma client:
Importazioni System.Net.Sockets
Imports System.Text
Public Class Form1
Dim clientSocket As New System.Net.Sockets.TcpClient()
Dim serverStream Come NetworkStream
Dim readData As String
Dim infiniteCounter As Integer
Private Sub Button1_Click (ByVal sender As System.Object, _
ByVal e come System.EventArgs) tratta Button1.Click
Dim outStream As Byte () = _
System.Text.Encoding.ASCII.GetBytes (TextBox2.Text + "$")
serverStream.Write (outStream, 0, outStream.Length)
serverStream.Flush ()
End Sub
Private Sub msg ()
Se Me.InvokeRequired Poi
Me.Invoke (New MethodInvoker (AddressOf msg))
Altro
TextBox1.Text = TextBox1.Text + Environment.NewLine + ">>" + readData
Finisci se
End Sub
Private Sub Button2_Click (ByVal sender As System.Object, _
ByVal e come System.EventArgs) tratta Button2.Click
readData = "conected per chattare Server ..."
MSG ()
clientSocket.Connect ( "127.0.0.1", 8888)
'Label1.Text = "Socket Programma client - server connesso ..."
serverStream = clientSocket.GetStream ()
Dim outStream As Byte () = _
System.Text.Encoding.ASCII.GetBytes (TextBox3.Text + "$")
serverStream.Write (outStream, 0, outStream.Length)
serverStream.Flush ()
Dim ctThread Come Threading.Thread = Nuovo Threading.Thread (AddressOf getMessage)
ctThread.Start ()
End Sub
Private Sub getMessage ()
Per infiniteCounter = 1 a 2
infiniteCounter = 1
serverStream = clientSocket.GetStream ()
Dim buffSize As Integer
inStream Dim (10024) As Byte
buffSize = clientSocket.ReceiveBufferSize
serverStream.Read (inStream, 0, buffSize)
Dim returndata As String = _
System.Text.Encoding.ASCII.GetString (inStream)
ReadData = "" + returndata
MSG ()
Il prossimo
End Sub
End Class
5 Eseguire il programma server prima premendo il tasto "F5", e quindi eseguire il programma client. Digitare il nome nella "Textbox3" e fare clic su "Button2" per connettersi al server. Digitare un messaggio nella "TextBox2," e poi cliccare su "Button1" per inviare un messaggio.