Winsock编程框架 (转)

Winsock编程框架 (转)[@more@]

 


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

  Microsoft Visual Basic提供了用于Windows Sockets 编程的可用 控件——Winsock控
件。该控件为 用户提供了访问TCP和UDP网络的极其方便的途径。并且适用于Microsoft 
Access、Visual Basic、Visual 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程序。

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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-990713/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-990713/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值