nullnull第七章 网络编程 7.1 概述
VB6.0的网络应用是基于分布式组件模型实现的,它能够创建功能强大的Internet和Intranet应用程序。
null Sockets是在Unix系统上提出来的,一开始主要是用于本地通讯,但很快就应用到C/S体系上。MicroSoft公司在此基础上创建了WinSock控件,专门用于Windows接口,与Sockets完全兼容。Winsock控件对用户来说是不可见的,它提供了访问 TCP 和 UDP 网络服务的方便途径。Microsoft Access、Visual Basic、Visual C++ 或 Visual FoxPro 的开发人员都可使用它。为编写客户或服务器应用程序,不必了解 TCP 的细节或调用低级的 Winsock APIs。通过设置控件的属性并调用其方法就可轻易连接到一台远程机器上去,并且还可双向交换数据。null7.2 Winsock控件 Winsocket控件被用来建立与远程计算机的连接,并通过用户数据报文
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
(UDP)或者传输控制协议(TCP)进行数据交换。
Winsock的使用方法:
(1)选择通信协议
(2)确定需要连接的远程计算机
(3)确定远程计算机连接端口null7.2.1 选择通信协议 在使用Winsock控件时,首先需要考虑使用什么通信协议,其可以使用TCP或UDP这两种通信协议。通过设置Winsock控件的Protocol属性值(sckTCPProtocol或者sckUDPProtocol),能够选择通信协议。例如以下代码:
Winsock1.Protocol= sckTCPProtocol
TCP、UDP协议这两种协议之间的区别体现在他们的连接状态上,其中
TCP协议控件是基于连接的协议,它与电话系统相似,在开始传输之前,用户必须先建立连接。
UDP协议是一种无连接的协议,两台计算机之间的传输类似于传递邮件,并且单次传输的最大数据量与具体网络有关。null 应该选择哪一种协议,往往需要由所创建的应用程序用途来决定。UDP协议适合发送少量的数据,因此若图像或者声音文件,则TCP协议所建立的明确连接,能更有效地确保数据传输的完整性。另外,在发送数据的时候,应用程序若需要得到客户端或者服务器的确认信息,则TCP协议更加适合。第一步 选择通信协议null 在与远程计算机相连接的时候,需要知道它的IP地址或者名称。通过设置Winsock控件的RemoteHost属性值,可以确定需要连接的计算机。第二步 确定需要连接的远程计算机null 通过设置Winsock控件的LocalPort属性值和Remote属性值,可以确定本地计算机和远程计算机的端口。它们默认的属性值是0。
端口0表示端口号是随机的,以便于计算机之间动态建立连接。第三步 确定计算机端口null7.2.1 示例:基于UDP协议的点对点通信 在基于TCP协议的通信程序中,服务器上的Winsock空间必须显式地进行“监听”,而客户端的Winsock空间必须使用Connect方法进行初始化连接。而UDP是无连接的协议,它与TCP通信协议的操作不同,计算机并不建立连接。而且,UDP应用程序既可以是客户机,也可以是服务器。也就是说,两台计算机的通信程序是“平等的”。因此,基于UDP协议的通信,可以看作点对点的通信。
在使用UDP协议的时候,由于不需要进行连接,因此也就可以在程序运行时任意修改RemoteHost和RemotePort属性(TCP协议在改变RemoteHost和RemotePort属性之前,必须先关闭连接),但必须始终保持绑定在同一个LocalPort上。nullUDP通信程序设计步骤: 在两个Winsock控件之间使用UDP协议进行数据通信,一般需要完成以下几步设置:
(1)将Winsock控件的Protocol属性设置为1-sckUDPProtocol
(2)设置Winsock控件的LocalPort属性值(本地端口)。
(3)将Winsock控件的RemoteHost属性设置为与其通信的计算机名或者IP地址(远程主机)
(4)将Winsock控件的RemotePort属性设置为与其进行通信的Winsock控件的LocalPort属性值(远程端口)。
(5)调用Bind方法绑定本地端口,以阻止其他应用程序使用同样的端口。null
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
的窗体设计视图 UDP示例程序中窗体的设计视图nullUDP示例程序中窗体上的控件属性设置null程序代码Option Explicit
Private Sub comdHostPort_Click()
udpWinscok.RemoteHost = Trim(TxtRemote(0))
udpWinscok.RemotePort = Trim(TxtRemote(1))
comdHostPort.Enabled = False
End Sub
Private Sub comdSendData_Click()
udpWinscok.SendData txtSendData
txtOutput.AddItem "本地IP:" & udpWinscok.LocalIP & "当前时间" & time
txtOutput.AddItem txtSendData
End SubPrivate Sub Form_Load()
udpWinscok.LocalPort = Val(Trim(InputBox("请在下面文本框中输入本地端口", "设置本地端口", 10001)))
udpWinscok.Bind
StatusBar1.SimpleText = " 本地IP:" & udpWinscok.LocalIP & " 本地端口号:" & udpWinscok.LocalPort
End Sub
Private Sub txtRemote_Change(Index As Integer)
comdHostPort.Enabled = True
End Sub
Private Sub udpWinscok_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
udpWinscok.GetData strData
txtOutput.AddItem "远端IP:" & RemoteIP & "当前时间" & time
txtOutput.AddItem strData
End Subnull两个运行中的UDP通信程序之间的通信