最新动态

工业物联网通讯专家!
认真做好每一件事,设计简单、可靠、价格合理的产品!

VB tcp ip 编程举例 基于winsock

基于Microsoft Winsock Control 6.0的VB tcpip 编程举例,TCP server ,TCP client ,UDP Server 和Client 模式,简单,可读性高,值得参考。

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 

想偷懒吗?来吧,我们提供下载。http://www.usr.cn/Download/24.html

广告:我公司提供网络转串口模块TCPIP转RJ45,价格低,品质稳定,欢迎咨询购买。

 



上一篇: 学习ARM必备的开发软件及实用工具
下一篇: 德州仪器(TI) $65亿现金收购美国国家半导体公司(NS)

发表评论