科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VB开发客户服务器软件的设计与实现

VB开发客户服务器软件的设计与实现

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文给出了利用Visual Basic6.0开发客户/服务器软件的设计方法;最后给出了应用实例

作者:LXJ 来源:论坛 2007年10月14日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
3 TCP/IP客户服务器程序设计方法

  使用TCP/IP协议通讯,首先要指定通信方式为TCP方式,将Winsock控件的Protocol属性设置为sckTCPProtocol。然后,按TCP通信协议规定,先要申请建立网络连接,然后才能传输数据。

  3.1服务器程序开始侦听网络

  服务器程序窗体中有三个Winsock控件,Name分别为sckServer、sckBusy和sckListen。

  其中sckListen是侦听控件;sckBusy是;sckServer连接控件。侦听控件和连接控件不能是同一个Winsock控件。

  服务器程序必须首先侦听网络,等待客户的连接申请,才有可能建立网络连接。服务器程序开始侦听网络前,需要为侦听用(sckListen)控件的LocalPort属性设置通信接口,然后调用Listen方法。服务器程序开始侦听网络的程序代码如下:

sckListen.LocalPort=4477
sckListen.Listen '侦听网络

  3.2客户程序申请连接

  当服务器程序已经启动运行并开始侦听网络后,在客户程序申请连接前,需要为客户Winsock控件的RemodeHost属性设置远程主机,为RemodePort属性设置通信接口,然后再调用Connect方法向服务器程序申请连接。

  设置远程主机名,可以是计算机名也可是IP地址。如果是主机计算机名,则需要系统翻译为相应的IP地址;如果是主机IP地址,则直接进行连接。

  申请连接的程序代码如下:

sckClient.Protocol = sckTCPProtocol '设置协议为TCP方式
'IP地址"127.0.0.1"代表本机,与本机的实际地址无关
sckClient.RemoteHost = "127.0.0.1""129.200.0.1"
'设置远程主机接口号,该值必须与设置远程主机服务器程序的接口号一致
sckClient.RemotePort = 4477
sckClient.Connect '申请连接

  3.3服务器程序应答连接请求

  服务器程序启动侦听网络后,当客户程序执行Connect方法申请连接时,服务器程序的侦听控件(sckListen)触发ConnectionRequest事件,并传递连接请求句柄。编程人员需要在该当事件程序中调用连接控件(sckServer)的Accept方法实现连接。

  服务器程序应答连接的程序代码如下:

Private Sub sckListen_ConnectionRequest(ByVal requestID As Long)
sckServer.Accept requestID '应答连接请求
End Sub

  当服务器程序执行Accept方法建立连接后,客户程序中的接连控件将触发Connect事件通报连接完成,否则触发Error事件通报连接失败。可以在该事件程序中加入连接后的处理程序。

  如果要求服务器程序支持多用户连接,则需要创建Winsock控件数组,在连接时动态生成Winsock控件与客户程序建立连接。程序代码应修改如下:

Private Sub sckListen_ConnectionRequest(ByVal requestID As Long)
Dim i As Long
If CurNumber<MaxNumber Then 'MaxNumber为最大连接数,CurNumber为当前连接数
For i = 1 To CurNumber
If sckServer(i).State = 0 Then '判断是否有空闲Winsock控件
Exit For
End If
Next i
If i = CurNumber Then
CurNumber = CurNumber + 1
i = CurNumber
End If
Load sckServer(i) '动态加载Winsock控件
sckServer(i).Accept requestID
Exit Sub
End If
sckBusy.Close
sckBusy.Accept requestID
End Sub

  3.4传送数据

  当服务器程序和客户程序连接成功后,可以开始传送数据。建立连接后的服务器程序和客户程序都可以发送或接收数据。当一方要发送数据时,调用SendData方法。

Dim SendStr As String
SendStr = "连接成功!"
Winsock1.SendData SendStr '传送数据

  如果一方发送了数据,在连接的另一方控件将产生DataArrival事件,在DataArrival事件处理程序中需要调用GetData方法接收数据。接收数据类型必须与发送数据的类型一致方可正确接收数据。接收数据的程序代码如下:

Dim RecStr As String
sckClient.GetData RecStr
Print RecStr

  3.5关闭连接

  当应用程序结束数据传送后,必须关闭连接,释放系统资源。当连接的一方关闭连接时,可以调用Close方法。关闭连接程序代码如下:

sckClient.Close '关闭连接

  一方执行关闭连接后,在连接的另一方控件将产生Close事件。程序需要处理事件,完成关闭连接的最后工作。该事件的处理代码如下:

Private Sub sckServer_Close()
sckServer(Index).Close '释放接连
Unload sckServer(Index) '删除控件
End Sub
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章