Search Tools Links Login

Amazing Winsock Chat Tutorial


This tutorial will walk you through the process of making a decent, and fully functional winsock chat. Extremely easy to comprehend, and made for newbies.

Original Author: Yariv Sarafraz

Code


.


Winsock Chat Tutorial [Tutorial
by Yariv Sarafraz]?

First off, I've
seen many winsock chat tutorials and examples on psc, and most of them are
vague. This tutorial will walk you through the process of making a decent,
functional winsock chat. So let's get started ...


We'll start with the client code.


Client Code
Requirements: Winsock
Control, 3 textboxes, 1 rich textbox, 1 label, and 2 command buttons. Let's get started ...

The
rich textbox will be the
chat room itself, so let's name it 'txtchat'.? We'll name the first textbox
'txtsend',
the second we'll name 'txtport', and the third we'll name 'txtip'. Name the label
'lblstatus'. Add the 2 command buttons, as well as, the winsock control to the form.


Private Sub Form_Load()
txtport.Text
= "616"
'Assigning a port


txtip.Text = "127.0.0.1"
End
Sub


Private Sub Winsock1_Connect()

lblstatus.Caption? = "Connected to Server!"? 'Reporting
status


txtchat.Text = txtchat.Text & "*** Connection Complete Achieved ... ***"?
'Reporting status to chat

End Sub


Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

If Winsock1.State <> sckClosed Then Winsock1.Close?
'If the winsock control is in use, close it

Winsock1.Accept requestID?
'Allow
connection


End Sub


Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)

lblstatus.caption = "Error Occurred."??
'If an error occurs, report it to the status bar
Command2.Enabled =
True

End Sub


Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim Data As String

Winsock1.GetData Data?? 'Get
whatever data the server has sent to you (the client)


txtchat.Text = txtchat.Text & vbNewLine & "Server: " & vbTab & Data?
'Whatever
data we receive, place into the chat textbox, txtchat.Text.


End Sub


Private Sub txtchat_Change()

txtchat.SelStart = Len(txtchat.Text)? 'This
one line of code will responds to the fact text is being sent to txtchat.Text,
and as text enters the textbox, it automatically scrolls down to the last line.
If you don't know what I'm talking about, just try the code and you'll
understand.


End Sub


'Make command button 1's
caption 'Send Text'

Private Sub
Command1_Click()

Data = txtsend.Text

If
lblstatus.Caption? = "Connected to Server!"? Then? 'If
the status bar states that you're connected, then ...


txtchat.Text = txtchat.Text & vbNewLine & "Client: " & vbTab &
txtsend.Text? 'Add the text you typed to the chatbox

Winsock1.SendData (Data) 'And send the text you typed to
the server


txtsend.Text = "" 'Clear txtsend.Text

Else 'But! If the status label says anything but
'Connected to Server!', do the following


txtchat.Text = txtchat.Text & vbNewLine & "* Connection Lost/Not
Found." 'Send to the chat window an error message

End If
End Sub


'Make command button 2's
caption 'Connect to Server'

Private Sub
Command2_Click()
If
txtip.Text = "" then?
'If the IP
text box (txtip.Text) is empty, then do the following ...

Msgbox
"Please enter an IP number."?
'Send
a message box to report the problem

Exit Sub
Else??

'But if the IP text box (txtip.Text) is anything but
empty, do the following ...

Command2.Enabled
= False

Winsock1.Close? 'Close any current connection
Winsock1.Connect
txtip.text, txtport.text?
'Connect to the given IP and port.

lblstatus.Caption? = "Connecting ..."? 'Report
status to status label

End Sub


Private Sub Form_Unload(Cancel As Integer)

On Error Resume Next? 'If
an error were to occur, ignore it and keep working


Winsock1.SendData "Exit" 'See
the Winsock1_DataArrival for the server to understand what this is doing
here


Do Events?

Winsock1.Close? 'Close
the connection


End? 'Exit the program

End Sub


------------------------------:
Client code ends here! We now begin the Server code.


Server Code
Requirements: Winsock
Control, 1 textbox, 1 rich textbox, 1 label, and 2 command buttons. Let's get started ...

The
rich textbox will be the
chat room itself, so let's name it 'txtchat'.? We'll name the textbox
'txtsend'. Name the label
'lblstatus'. Add the 2 command buttons, as well as, the winsock control to the form.


'Make command button 1's
caption 'Listen for Connection'

Private Sub
Command1_Click()

Winsock1.Close? 'Close
any current winsock connection


Winsock1.LocalPort = 616? 'Assigning
a port


Winsock1.Listen 'Listen for
connection


lblstatus.Caption = "Listening for connection ..."?
'Report status to status label


txtchat.Text = txtchat.Text & "*** Not Connected. Please stand by ... ***"??
'Report status to chat

End Sub


'Make command button 2's
caption 'Send Text'

Private Sub
Command2_Click()

Data = txtsend.Text? 'Define 'Data'

If
lblstatus.Caption? = "Connected."? Then? 'If
the status bar states that you're connected, then ...


txtchat.Text = txtchat.Text & vbNewLine & "Server: " & vbTab &
txtsend.Text? 'Add the text you typed to the chatbox

Winsock1.SendData (Data) 'And send the text you typed to
the client


txtsend.Text = "" 'Clear txtsend.Text

Else 'But! If the status label says anything but
'Connected.', do the following


txtchat.Text = txtchat.Text & vbNewLine & "* Connection Lost/Not
Found." 'Send an error message to the chat window

End If

End Sub


Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

If Winsock1.State <> sckClosed Then Winsock1.Close?
'If the winsock control is in use, close it

Winsock1.Accept requestID?
'Allow
connection
lblstatus.Caption = "Connected."

End Sub


Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)

lblstatus.caption = "Error Occurred."??
'If an error occurs, report it to the status bar

End Sub


Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim Data As String

Winsock1.GetData Data? 'Get
the data sent by the client


If Data = "Exit" Then 'If
the data string is 'Exit' then do the following ...


Winsock1.Close 'Close the winsock connection

lblstatus.Caption = "Connection Forcefully Ended." 'The
status bar will display the fact that the server is disconnected


Else 'But, If the data string is anything but
'Exit', then ...


txtchat.Text = txtchat.Text & vbNewLine & "Client: " & vbTab & Data?
'Add data to txtchat.Text (the chatroom)

End If

End Sub


Private Sub txtchat_Change()

txtchat.SelStart = Len(txtchat.Text)? 'This
one line of code will responds to the fact text is being sent to txtchat.Text,
and as text enters the textbox, it automatically scrolls down to the last line.
If you don't know what I'm talking about, just try the code and you'll
understand.


End Sub




-----------------------------------------------------------
That's it! You're
done. It's really not that complicated.


I am currently working on a RAT (Remote Admin Tool), and if you have any
knowledge concerning the programming of the 'Edit Server' part of a RAT, please
contact me, at:? wise@iamwasted.com,
or ICQ# 164953049


[? Enjoy the tutorial
-? Yariv Sarafraz?
]


About this post

Posted: 2003-06-01
By: ArchiveBot
Viewed: 145 times

Categories

Visual Basic 6

Attachments

No attachments for this post


Loading Comments ...

Comments

No comments have been added for this post.

You must be logged in to make a comment.