65.9K
CodeProject is changing. Read more.
Home

Chatting Application Using DotNet

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.91/5 (21 votes)

Jul 5, 2007

1 min read

viewsIcon

92544

downloadIcon

20067

Chatting Application Using VB.Net (ConCurrent Server)

Download ServerForm.zip - 192.9 KB

Download ClientForm.zip - 196.7 KB

Screenshot - Server_Form1.jpg

Screenshot - Client_after_Conn.jpg

Introduction

Simple Chatting Application Using Socket Programming in VB.Net . This Application use TCP Protocol for Communication. So it is Connection Oriented and reliable Service.........

Background

Mainly Background is Socket Programming in VB.NET which use System.Net.Sockets NameSpace...

Client Socket::: TcpClient Class

Server Socket:: TcpListner Class

Socket is Combination of IP_Address and PortNo.. When we create Socket we have to give IP , Port No and Protocol..

Here DotNet give TcpClient Class which is by default use TCP Protocol.. we have to just provide IP And PortNo..

Same way For TcpListner Class also...............

Using the code

Connect Sub Will send Connection Request to server on given ip

after Connection Receive function is started using thread.. because receive function will go in infinite loop so we have to start receive funtion using Thread.otherwise your mainProcess will goes in infinite loop..

// Public Sub Connect()
        Try
            ipHostinfo = Dns.Resolve(Txtserver.Text)
            ipAdd = ipHostinfo.AddressList(0)
            remoteEP = New IPEndPoint(ipAdd, 11000)
            sender.Connect(remoteEP)
            th = New System.Threading.Thread(AddressOf Receive)
            th.Start()
            i = 1
            MessageBox.Show("Client Connected With Server->" + Txtserver.Text)
        Catch ex As Exception
            MessageBox.Show(ex.Message)

        End Try
        
    End Sub

if we use Multi threading architecture we get 1 main Problem Called: Cross Thread Problem

Solve this problem using Delegate Funtion..Here is Solution

 If Me.List.InvokeRequired Then
            Dim d As New SetDisplay(AddressOf Proccessdata)
            Me.Invoke(d, New Object() {str})
        Else
            Me.List.Items.Add(str)
Public Sub Receive()
        Dim bytes(100000) As Byte
        Dim bytesRec As Integer
   A:      While True
            bytes = New Byte(100000) {}
            bytesRec = sender.Receive(bytes)
            If bytesRec > 0 Then
                Data = Encoding.ASCII.GetString(bytes, 0, bytesRec)
                Exit While
            End If
           End While
        'List.Items.Add(Data)
        'MessageBox.Show(Data)
        Proccessdata(Data)
        ActionData(Data)
        GoTo A
End Sub
        Try
            msg = Encoding.ASCII.GetBytes(Txtmsg.Text)
            Me.sender.Send(msg)
            Txtmsg.Text = ""
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

Points of Interest


Screenshot - Cd_Drive.jpg

This is part of Client Screen.. one intresting point that we can control server Cd Drive From Client Form...

You can Open Notepad , PainBrush ,Calculator On server Machine From Client Screen....

You Can Lock and Release Mouse of Client Pc From the Server....

You Can ShutDown and Restart client Computer From the Server.....

You Can Capture the Photo of Client Screen From the Server......

History

Keep a running update of any changes or improvements you've made here.