How to Make a Chat Room in Visual Basic Express

Having the knowledge of how to create a chat room using Microsoft Visual Basic Express can save you time when you need to create a chat room application. Visual Basic Express is available for free to anyone interested in creating applications using VB.NET. A chat room involves two applications, the server and the client. The server handles all the client connections, and the client application connects users to the server room to send messages.

Instructions

    • 1

      Start Microsoft Visual Basic Express, and then click "New Project." On the left pane of your screen, select "Console Application." Click "OK."

    • 2

      Press "Ctrl" + "A," and then press "Delete." Copy and paste the following code into your "Module1.vb" to create the server program:

      Imports System.Net.Sockets

      Imports System.Text

      Module Module1

      Dim clientsList As New Hashtable

      Sub Main()

      Dim serverSocket As New TcpListener(8888)

      Dim clientSocket As TcpClient

      Dim infiniteCounter As Integer

      Dim counter As Integer

      serverSocket.Start()

      msg("Chat Server Started ....")

      counter = 0

      infiniteCounter = 0

      For infiniteCounter = 1 To 2

      infiniteCounter = 1

      counter += 1

      clientSocket = serverSocket.AcceptTcpClient()

      Dim bytesFrom(10024) As Byte

      Dim dataFromClient As String

      Dim networkStream As 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 + " Joined ", dataFromClient, False)

      msg(dataFromClient + " Joined chat room ")

      Dim client As New handleClinet

      client.startClient(clientSocket, dataFromClient, clientsList)

      Next

      clientSocket.Close()

      serverSocket.Stop()

      msg("exit")

      Console.ReadLine()

      End Sub

      Sub msg(ByVal mesg As String)

      mesg.Trim()

      Console.WriteLine(" >> " + mesg)

      End Sub

      Private Sub broadcast(ByVal msg As String, _

      ByVal uName As String, ByVal flag As Boolean)

      Dim Item As DictionaryEntry

      For Each Item In clientsList

      Dim broadcastSocket As TcpClient

      broadcastSocket = CType(Item.Value, TcpClient)

      Dim broadcastStream As NetworkStream = _

      broadcastSocket.GetStream()

      Dim broadcastBytes As [Byte]()

      If flag = True Then

      broadcastBytes = Encoding.ASCII.GetBytes(uName + " says : " + msg)

      Else

      broadcastBytes = Encoding.ASCII.GetBytes(msg)

      End If

      broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length)

      broadcastStream.Flush()

      Next

      End Sub

      Public Class handleClinet

      Dim clientSocket As TcpClient

      Dim clNo As String

      Dim clientsList As Hashtable

      Public Sub startClient(ByVal inClientSocket As TcpClient, _

      ByVal clineNo As String, ByVal cList As Hashtable)

      Me.clientSocket = inClientSocket

      Me.clNo = clineNo

      Me.clientsList = cList

      Dim ctThread As Threading.Thread = New Threading.Thread(AddressOf doChat)

      ctThread.Start()

      End Sub

      Private Sub doChat()

      Dim infiniteCounter As Integer

      Dim requestCount As Integer

      Dim bytesFrom(10024) As Byte

      Dim dataFromClient As String

      Dim sendBytes As [Byte]()

      Dim serverResponse As String

      Dim rCount As String

      requestCount = 0

      For infiniteCounter = 1 To 2

      infiniteCounter = 1

      Try

      requestCount = requestCount + 1

      Dim networkStream As NetworkStream = _

      clientSocket.GetStream()

      networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize))

      dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom)

      dataFromClient = _

      dataFromClient.Substring(0, dataFromClient.IndexOf("$"))

      msg("From client - " + clNo + " : " + dataFromClient)

      rCount = Convert.ToString(requestCount)

      broadcast(dataFromClient, clNo, True)

      Catch ex As Exception

      MsgBox(ex.ToString)

      End Try

      Next

      End Sub

      End Class

      End Module

    • 3

      Start Microsoft Visual Basic Express, and then click "New Project." On the left pane of your screen, select "Windows Forms Application." Click "OK." Click the "Toolbox" pane, and then double-click "TextBox" to add a new text box. Add two more text boxes. Add two buttons from the "Toolbox" menu.

    • 4

      Double-click the form, and then Press "Ctrl" + "A." Press "Delete." Copy and paste the following code into your "Form1.vb" module to create the client program:

      Imports System.Net.Sockets

      Imports System.Text

      Public Class Form1

      Dim clientSocket As New System.Net.Sockets.TcpClient()

      Dim serverStream As NetworkStream

      Dim readData As String

      Dim infiniteCounter As Integer

      Private Sub Button1_Click(ByVal sender As System.Object, _

      ByVal e As System.EventArgs) Handles 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()

      If Me.InvokeRequired Then

      Me.Invoke(New MethodInvoker(AddressOf msg))

      Else

      TextBox1.Text = TextBox1.Text + Environment.NewLine + " >> " + readData

      End If

      End Sub

      Private Sub Button2_Click(ByVal sender As System.Object, _

      ByVal e As System.EventArgs) Handles Button2.Click

      readData = "Conected to Chat Server ..."

      msg()

      clientSocket.Connect("127.0.0.1", 8888)

      'Label1.Text = "Client Socket Program - Server Connected ..."

      serverStream = clientSocket.GetStream()

      Dim outStream As Byte() = _

      System.Text.Encoding.ASCII.GetBytes(TextBox3.Text + "$")

      serverStream.Write(outStream, 0, outStream.Length)

      serverStream.Flush()

      Dim ctThread As Threading.Thread = New Threading.Thread(AddressOf getMessage)

      ctThread.Start()

      End Sub

      Private Sub getMessage()

      For infiniteCounter = 1 To 2

      infiniteCounter = 1

      serverStream = clientSocket.GetStream()

      Dim buffSize As Integer

      Dim inStream(10024) As Byte

      buffSize = clientSocket.ReceiveBufferSize

      serverStream.Read(inStream, 0, buffSize)

      Dim returndata As String = _

      System.Text.Encoding.ASCII.GetString(inStream)

      readData = "" + returndata

      msg()

      Next

      End Sub

      End Class

    • 5

      Run the server program first by pressing "F5", and then run the client program. Type your name in "Textbox3" and click "Button2" to connect to the server. Type a message in "TextBox2," and then click "Button1" to send a message.

Related Searches:

References

Comments

You May Also Like

Related Ads

Featured