TCP/IP Network Programming
|
Tips >> Visual
Basic |
MAKE WEB APPLICATION WITHOUT KNOWLEDGE OF CODING? CLICK HERE
Network programming is based around the Winsock control.
To use the Winsock Control, add it to the ToolBox by selecting the
"Components" menu item and select "Microsoft
Winsock Control 6.0" from the list. The Winsock control
is not visible to the user when the application is run and provides
access to Transfer Control Protocol (TCP) and User Datagram
Protocol (UDP) Network Services.
Transfer Control Protocol (TCP)
The Transfer Control Protocol (TCP) is used to create and
maintain a connection to a remote computer. To set the Winsock control
to TCP, set Winsock's Protocol Property to "sckTCPProtocol".
The computers are able to share information through the connection.
The Client must know the Server's name or Internet Protocol
IP address, set in the RemoteHost Property of the Winsock control.
The Client must also know the Port number on which the Server will
be listening, set in the RemotePort Property of the Winsock control.
|
If tcpClient.RemoteHost = ""
Then
tcpClient.RemoteHost = "localhost"
End If
tcpClient.RemotePort = 3456
tcpClient.Connect |
|
The LocalPort Property must be set on the Server to specify
which Port it is listening to.
|
tcpServer.LocalPort = 3456
tcpServer.Listen |
|
When the Client requests a connection, the ConnectionRequest Event
occurs. The Accept method is used within the ConnectionRequest
event to complete the connection.
When connected, information is sent and received using the SendData
and GetData methods. When data is received, the DataArrival
Event occurs.
SIMPLE TCP CHAT PROGRAM
The following describes how to create a simple TCP based chat program.
The program consists of two parts, a server and a client.
TCP CHAT SERVER
The Server Application has a Winsock control named tcpServer
using the Protocol sckTCPProtocol, and two TextBoxes,
named txtOutput and txtSend. txtOutput's MultiLine
Property is set to True.
|
Option Explicit
Private Sub Form_Load()
txtSend.Enabled = False
txtOutput.Enabled = False
tcpServer.LocalPort = 3456
tcpServer.Listen
End Sub
Private Sub Form_Unload(Cancel As Integer)
tcpServer.Close
End Sub
Private Sub tcpServer_Close()
txtSend.Enabled = False
txtOutput.Enabled = False
tcpServer.Close
txtOutput.Text = txtOutput.Text
& "Client closed connection" & vbCrLf &
vbCrLf
txtOutput.SelStart = Len(txtOutput.Text)
tcpServer.Listen
End Sub
Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)
If tcpServer.State <> sckClosed
Then
tcpServer.Close
End If
txtSend.Enabled = True
txtOutput.Enabled = True
tcpServer.Accept requestID
txtOutput.Text = tcpServer.RemoteHostIP
& ":" & _
tcpServer.RemotePort & _
" connected" & vbCrLf
& vbCrLf
End Sub
Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
Dim msg As String
tcpServer.GetData msg
txtOutput.Text = txtOutput.Text
& msg & vbCrLf
txtOutput.SelStart = Len(txtOutput.Text)
End Sub
Private Sub tcpServer_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)
MsgBox Source & ": "
& Description, vbExclamation, "TCP/IP Error"
End Sub
Private Sub txtOutput_GotFocus()
If txtOutput.Enabled = True Then
txtSend.SetFocus
End If
End Sub
Private Sub txtSend_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii
= 0
tcpServer.SendData
"SERVER: " & txtSend.Text
txtOutput.Text
= txtOutput.Text & "SERVER: " & txtSend.Text
& vbCrLf
txtOutput.SelStart
= Len(txtOutput.Text)
txtSend.Text
= ""
End If
End Sub |
|
TCP CHAT CLIENT:
The Client Application has a Winsock control named
tcpClient using the Protocol sckTCPProtocol, and two
TextBoxes named txtOutput and txtSend. txtOutput's MultiLine Property
is set to True.
|
Option Explicit
Private Sub Form_Load()
Dim strPrompt As String
strPrompt = "Enter the IP
address of the server"
txtSend.Enabled = False
txtOutput.Enabled = False
tcpClient.RemoteHost = InputBox(strPrompt,
"IP Address", "127.0.0.1")
If tcpClient.RemoteHost = ""
Then
tcpClient.RemoteHost
= "localhost"
End If
tcpClient.RemotePort = 3456
tcpClient.Connect
End Sub
Private Sub Form_Unload(Cancel As Integer)
tcpClient.Close
End Sub
Private Sub tcpClient_Close()
txtSend.Enabled = False
txtOutput.Enabled = False
tcpClient.Close
txtOutput.Text = txtOutput.Text
& "Server closed connection" & vbCrLf &
vbCrLf
txtOutput.SelStart = Len(txtOutput.Text)
End Sub
Private Sub tcpClient_Connect()
txtSend.Enabled = True
txtOutput.Enabled = True
txtOutput.Text = tcpClient.RemoteHostIP
& _
":" & tcpClient.RemotePort
& _
" connected" & vbCrLf
& vbCrLf
End Sub
Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long)
Dim msg As String
tcpClient.GetData msg
txtOutput.Text = txtOutput.Text
& msg & vbCrLf
txtOutput.SelStart = Len(txtOutput.Text)
End Sub
Private Sub tcpClient_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)
MsgBox Source & ": "
& Description, vbExclamation, "TCP/IP Error"
End Sub
Private Sub txtOutput_GotFocus()
If txtOutput.Enabled = True Then
txtSend.SetFocus
End If
End Sub
Private Sub txtSend_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii
= 0
tcpClient.SendData
"CLIENT: " & txtSend.Text
txtOutput.Text
= txtOutput.Text & "CLIENT: " & txtSend.Text
& vbCrLf
txtOutput.SelStart
= Len(txtOutput.Text)
txtSend.Text
= ""
End If
End Sub |
|
TCO/IP APPLICATION:
USER DATAGRAM PROTOCOL (UDP)
The User Datagram Protocol (UDP) is a Connectionless
protocol and unlike TCP does not establish a connection. To
set the Winsock control to UDP, set Winsock's Protocol Property
to sckUDPProtocol. The computers are able to share information through
the connection. Data is sent by setting the Client's LocalPort property
and the Server's RemoteHost and RemptePort Properties to the Internet
address and LocalPort Property of the Client.
Data is sent and received using the SendData and GetData
methods. When data is received, the DataArrival Event occurs.
SIMPLE UDP CHAT PROGRAM:
The following describes how to create a simple UDP based chat
program. Like the TCP chat program, this example is consists
of a server and a client.
UDP CHAT SERVER:
The Server Application has a Winsock control named
udpServer using the Protocol sckUDPProtocol, and two TextBoxes
named txtOutput and txtSend. txtOutput's MultiLine Property is set
to True.
|
Option Explicit
Private Sub Form_Load()
udpServer.Bind 3456
End Sub
Private Sub Form_Unload(Cancel As Integer)
udpServer.Close
End Sub
Private Sub udpServer_DataArrival(ByVal bytesTotal As Long)
Dim msg As String
udpServer.GetData msg
txtOutput.Text = txtOutput.Text
& udpServer.RemoteHostIP
txtOutput.Text = txtOutput.Text
& ":" & udpServer.RemotePort
txtOutput.Text = txtOutput.Text
& " " & msg & vbCrLf
txtOutput.SelStart = Len(txtOutput.Text)
End Sub
Private Sub txtOutput_GotFocus()
txtSend.SetFocus
End Sub
Private Sub txtSend_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii
= 0
udpServer.SendData
txtSend.Text
txtOutput.Text
= txtOutput & "Sent: " & txtSend.Text &
vbCrLf
txtOutput.SelStart
= Len(txtOutput.Text)
txtSend.Text
= ""
End If
End Sub |
|
UDP CHAT CLIENT:
The Client Application has a Winsock control named
udpClient using the Protocol sckUDPProtocol, and two TextBoxes named
txtOutput and txtSend. txtOutput's MultiLine Property is set to
True.
|
Option Explicit
Private Sub Form_Load()
Dim msg As String
msg = "Enter the IP address
of the server"
udpClient.RemoteHost = InputBox(msg,
"IP Address", "localhost")
If udpClient.RemoteHost = ""
Then
udpClient.RemoteHost
= "localhost"
End If
udpClient.RemotePort = 3456
End Sub
Private Sub Form_Unload(Cancel As Integer)
udpClient.Close
End Sub
Private Sub udpClient_DataArrival(ByVal bytesTotal As Long)
Dim msg As String
udpClient.GetData msg
txtOutput.Text = txtOutput.Text
& udpClient.RemoteHostIP
txtOutput.Text = txtOutput.Text
& ":" & udpClient.RemotePort
txtOutput.Text = txtOutput.Text
& " " & msg & vbCrLf
txtOutput.SelStart = Len(txtOutput.Text)
End Sub
Private Sub txtOutput_GotFocus()
txtSend.SetFocus
End Sub
Private Sub txtSend_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii
= 0
udpClient.SendData
txtSend.Text
txtOutput.Text
= txtOutput.Text & "Sent: " & txtSend.Text
& vbCrLf
txtOutput.SelStart
= Len(txtOutput.Text)
txtSend.Text
= ""
End If
End Sub |
|
If you don't find what you are looking for. Please click
here to submit your query, our experts will reply soon.
|