Come fare una Chat Room in Visual Basic Express

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.

istruzione

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.