ndfweb.cn

VB中WinSock控件的屬性、方法、事件及應用


2009-04-22 08:48:12 (6259)



一、WinSock簡介
        Socket(套接字)最初是由加利福尼亞大學Berkeley(伯克利)分校為UNIX操作係統開發的網絡通信接口,隨著UNIX的廣泛使用,Socket成為當前最流行的網絡通信應用程序接口之一。20世紀90年代初,由Sun Microsystems,JSB,FTP software,Microdyne和Microsoft等幾家公司共同定製了一套標準,即Windows Socket規範,簡稱WinSock。

VB編寫網絡程序主要有兩種方式:1.winsock控件 2.winsockAPI

二、WinSock控件的使用
1.WinSock控件的主要屬性
a.Protocol屬性
     通過Protocol屬性可以設置WinSock控件連接遠程計算機使用的協議。可選的協議是TCP和UDP對應的VB的常量分別是sckTCPProtocol和sckUDPProtocol,Winsock控件默認協議是TCP。注意:雖然可以在運行時設置協議,但必須在連接未建立或斷開連接後。

b.SocketHandle屬性
     SocketHandle返回當前socket連接的句柄,這是隻讀屬性。

c.RemoteHostIP屬性
     RemoteHostIP屬性返回遠程計算機的IP地址。在客戶端,當使用了控件的Connect方法後,遠程計算機的IP地址就賦給了RemoteHostIP屬性,而在服務器端,當ConnectRequest事件後,遠程計算機(客戶端)的IP地址就賦給了這個屬性。如果使用的是UDP協議那麼當DataArrival事件後,發送UDP報文的計算機的IP才賦給了這個屬性。

d.ByteReceived屬性
     返回當前接收緩衝區中的字節數

e.State屬性
     返回WinSock控件當前的狀態

     常數                                  值      描述
     sckClosed                            0       缺省值,關閉。
     SckOpen                             1       打開。
     SckListening                         2       偵聽
     sckConnectionPending           3       連接掛起
     sckResolvingHost                  4       識別主機。
     sckHostResolved                   5       已識別主機
     sckConnecting                      6       正在連接。
     sckConnected                      7       已連接。
     sckClosing                            8       同級人員正在關閉連接。
     sckError                               9   錯誤


2.WinSock主要方法
a.Bind方法
     用Bind方法可以把一個端口號固定為本控件使用,使得別的應用程序不能再使用這個端口。

b.Listen方法
     Listen方法隻在使用TCP協議時有用。它將應用程序置於監聽檢測狀態。

c.Connect方法
     當本地計算機希望和遠程計算機建立連接時,就可以調用Connect方法。
     Connect方法調用的規範為:
     Connect RemoteHost,RemotePort

d.Accept方法
     當服務器接收到客戶端的連接請求後,服務器有權決定是否接受客戶端的請求。

e.SendData方法
     當連接建立後,要發送數據就可以調用SendData方法,該方法隻有一個參數,就是要發送的數據。

f.GetData方法
     當本地計算機接收到遠程計算機的數據時,數據存放在緩衝區中,要從緩衝區中取出數據,可以使用GetData方法。GetData方法調用規範如下:
     GetData data,[type,][maxLen]
     它從緩衝區中取得最長為maxLen的數據,並以type類型存放在data中,GetData取得數據後,就把相應的緩衝區清空。

g.PeekData方法
     和GetData方法類似,但PeekData在取得數據後並不把緩衝區清空。


3.Winsock控件主要事件

a.ConnectRequest事件
     當本地計算機接收到遠程計算機發送的連接請求時,控件的ConnectRequest事件將會被觸發。

b.SendProgress事件
     當一端的計算機正在向另一端的計算機發送數據時,SendProgress事件將被觸發。SendProgress事件記錄了當前狀態下已發送的字節數和剩餘字節數。

c.SendComplete事件
     當所有數據發送完成時,被觸發。

d.DataArrival事件
     當建立連接後,接受到了新數據就會觸發這個事件。注意:如果在接受到新數據前,緩衝區中非空,就不會觸發這個事件。

e.Error事件
     當在工作中發生任何錯誤都會觸發這個事件。

本文版权:http://www.ndfweb.cn/news-301.html
  NDF俱乐部
  国际域名注册
  建站咨询
简体中文 NDF网站建设淘宝店 | ICO图标在线生成 | 外贸网站建设 | 联系我们
©2007-2025 NDF Corporation 鲁ICP备08005967号 Sitemap - RSSRSS订阅