在VB的Winsock编程框架

翻译|其它|编辑:郝浩|2007-09-06 11:45:12.000|阅读 976 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

Microsoft    Windows Sockets API    Windows  下的网络应用程序接口,为了适用于Windows  下的消息机制和异步的  I/O  选择操作,Windows Sockets API  在功能上扩充了将近20个函数,其中扩充的部分均冠以前缀  WSAWindows Sockets Asynchronous,  WSAStartupWSAClean  等,充分体现了  Widnows  的优越性。此外,Windows Sockets API  16位版和32位版两种,16位版是单进程的,32位版则提供了多线程下的安全保护。

Microsoft Visual Basic  提供了用于  Windows Sockets  编程的可用控件――Winsock  控件。该控件为用户提供了访问  TCP    UDP  网络的极其方便的途径。并且适用于  Microsoft AccessVisual BasicVisual C++和  Visual FoxPro  等多种可视化环境。通过  Winsock  控件编制  C/S  程序,程序员无须了解  TCP  或低级  Winsock APIs  调用实现的细节,如用户无须考虑网络字节顺序与本机字接顺序便可直接进行数据的传送。用该控件实现网间进程通信极其方便。

  TCP  应用中,为了建立一个网络连接实例(Instance)的服务器端,只需设置本地服务端口号,然后服务器调用方法  Listen  进入阻塞状态,等待来自客户的连接请求。与此对应的客户端不但要将  Winsock  的属性  RemoteHost  置为服务器的名称(IP  地址或网络代号),还应设置服务器所监听的相应服务的端口号(RemotePort),如  FTP  服务在21号端口,HTTP  81号端口等。然后调用方法  Winsock.Connect  向服务器发出请求。服务器接收到客户请求时,事件  ConnectionRequest  将被触发。如服务器愿意提供服务,则可调用  Accept  方法接受连接。

一旦连接建立,两端均可使用  SendData    GetData  进行数据的发送或接收。事件  DataArrival  将在另一端数据准备就绪时被触发。

UDP  协议的实现与  TCP  不同的是,调用  Sockets  的两端无需建立连接便可进行数据的传输。因此,一个  UDP  应用可以同时担任服务器或客户的角色。

以下程序代码为  Visual Basic Windows Sockets  编程的基本框架。

'服务器方

Private Sub Command1.Click()

设置本地服务端口号

Winsock1.localport=2048

'服务器进入监听状态

 Winsock1.listen

 End Sub

 Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

 '收到客户连接请求

 '检查  Socket  状态

 If Winsock1.State <> sckClosed Then Winsock1.Close

 '接受客户请求

 Winsock1.Accept requestID

 End Sub

 Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

 '对方数据已准备好

 '可用  GetData()/SendData()接收/发送数据

 '处理客户数据

 End Sub

 Private Sub Form_Unload(Cancel As Integer)

 Winsock1.Close

 End Sub

 '客户方

 Private Sub Command1.Click()

 '设置服务器网络名

 Winsock1.RemoteHost=“193.168.1.40”

设置服务器相应服务端口号

Winsock1.RemotePort=2048

'向服务器发出连接请求

Winsock1.Connect

End Sub

Private Sub Winsock1_Connect()

'服务器响应连接

'可以进行  GetData()/SendData()进行数据传输

 End Sub

Private Sub Form1.Unload()

Winsock1.Close

End Sub

该段程序演示了用  Visual Basic  建立  TCP  连接的基本过程。因本文重在讲解  Sockets  编程,故文中未涉及  VB  自己封装的故障处理函数  Winsock1.Erroe(),读者可自行编制。以上程序段可作为一般  TCP  应用的基本框架加以扩展使用。

Microsoft Visual C++实现过程与前述的  VB  实现类同。具体实例可见  Microsoft Visual C++ Samples  中的  chatsrv    chater  程序。

随着  Internet  的逐步兴起,Sockets  编程必将成为流行的网络编程接口之一。也许您会发问:ISO    OSI  模型又是何等地位呢?笔者的观点是:ISO    OSI  模型必将成为网络应用的统一界面,Sockets  接口的广泛应用则为  OSI  模型开拓了更广泛的应用前景!


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:我可以网络

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP