Winsock属性 方法介绍
TCP:實現(xiàn)提供雙向,有序無從復(fù)的數(shù)據(jù)流服務(wù),流量控制+差錯檢測+糾錯等功能.
1.VB控件winsock是個運行中不可件的控件,常用屬性如下:
byte received 接收到的字節(jié)數(shù)
local hostname 本地機(jī)器名
Local IP 本地IP地址
Local port 本地通信程序的端口
Remote host 遠(yuǎn)程機(jī)器名
Remote host IP 遠(yuǎn)程IP地址
Remote port 遠(yuǎn)程通信程序端口
Socket handle 提供調(diào)用API得句柄參數(shù)
State 連接得當(dāng)前狀態(tài)
Protocol 使用協(xié)議
Bytereceived:反應(yīng)接收到得數(shù)據(jù)量,以字節(jié)為單位。
State:返回當(dāng)前連接狀態(tài)
0 關(guān)閉狀態(tài)
1 打開狀態(tài)
2 監(jiān)聽狀態(tài)
3 連接掛起
4 解析域名
5 正在連接
6 以建立連接
7 正在關(guān)閉
8 出錯
2.控件
accept接受一個連接請求。格式:對象.accept request ID
bind:多協(xié)議接口下,把接口卡,IP地址捆綁再一起。格式:對象。Bina端口號,ip地址
close:關(guān)閉連接。格式:對象。Close
connect:發(fā)送連接請求。格式:對象。Connect〔ip,遠(yuǎn)程端口〕
getdata:取出數(shù)據(jù)后清除緩沖區(qū)。
Peekdata:取出數(shù)據(jù)后不清楚緩沖區(qū)。格式:對象。Getdata(peekdata)變量〔,數(shù)據(jù)類型〔,最大長度〕〕
Listen:偵聽。格式:對象。Listen
Senddata:發(fā)送數(shù)據(jù)。格式:對象。Senddata
3.控件事件
Close 遠(yuǎn)程設(shè)備關(guān)閉連接時觸發(fā)事件
Connect 建立連接,進(jìn)行通信時觸發(fā)
Connectrequest 有連接請求時觸發(fā)
Data arrival 有數(shù)據(jù)到達(dá)時觸發(fā)
Error 錯誤時觸發(fā)
Send complete 完成一次數(shù)據(jù)傳送觸發(fā)
Send progress 數(shù)據(jù)傳送進(jìn)度
 ?Winsock的方法屬性
 
 
Winsock控件對用戶是不可視的,可以很容易地訪問TCP和UDP網(wǎng)絡(luò)服務(wù)。TOM注:制作網(wǎng)絡(luò)通訊軟件,應(yīng)該沒有比VB+WINSOCK控件更簡單的方案了吧? 其可以被Microsoft Access, Visual Basic ,Visual C++或Visual FoxPro開發(fā)人員使用。  用Winsock控件編寫客戶和服務(wù)器應(yīng)用程序,不需要了解TCP或調(diào)用底層Winsock API的具體細(xì)節(jié)。 通過設(shè)置Winsock控件的屬性和調(diào)用該控件的方法,可以很容易地連接到遠(yuǎn)程計算機(jī)并進(jìn)行雙向的數(shù)據(jù)交換。
 Winsock控件使用手冊
 ?
 本文使用Word2000排版,如你閱讀時版面較凌亂,請使用Word2000閱讀。
 ?
 Winsock控件對用戶是不可視的,可以很容易地訪問TCP和UDP網(wǎng)絡(luò)服務(wù)。TOM注:制作網(wǎng)絡(luò)通訊軟件,應(yīng)該沒有比VB+WINSOCK控件更簡單的方案了吧?
 其可以被Microsoft Access, Visual Basic ,Visual C++或Visual FoxPro開發(fā)人員使用。
 用Winsock控件編寫客戶和服務(wù)器應(yīng)用程序,不需要了解TCP或調(diào)用底層Winsock API的具體細(xì)節(jié)。
 通過設(shè)置Winsock控件的屬性和調(diào)用該控件的方法,可以很容易地連接到遠(yuǎn)程計算機(jī)并進(jìn)行雙向的數(shù)據(jù)交換。
 ?
 TCP基本知識
 ?
 TCP(Transfer Control Protocol)允許你創(chuàng)建并維護(hù)一個與遠(yuǎn)程計算機(jī)的連接,使用該連接,兩臺計算機(jī)之間就可以交換數(shù)據(jù)了。
 如果你在創(chuàng)建一個客戶應(yīng)用程序,你必須知道服務(wù)器計算機(jī)的名字T注:建議用IP地址或IP地址(RemoteHost屬性),以及要監(jiān)聽的端口號(RemotePort屬性),然后調(diào)用Connect方法。
 如果你在創(chuàng)建一個服務(wù)器應(yīng)用程序,設(shè)置要監(jiān)聽的端口號(LocalPort屬性),調(diào)用Listen方法。當(dāng)客戶建立連接請求時,產(chǎn)生ConnectionRequest事件。要完成該連接,在ConnectionRequest事件中調(diào)用Accept方法。
 一旦建立了連接,兩臺計算機(jī)之間就可以發(fā)送和接受數(shù)據(jù)了。要發(fā)送數(shù)據(jù),調(diào)用SendData方法。當(dāng)接受數(shù)據(jù)時,產(chǎn)生DataArrival事件。在DataArrival事件中調(diào)用GetData方法來檢取數(shù)據(jù)。
 ?
 UDP基本知識
 ?
 UDP(User Datagram Protocol)是無連接的協(xié)議。
 與TCP操作不同,計算機(jī)并不建立一個連接。并且,UDP應(yīng)用程序可以是客戶也可以是服務(wù)器。
 要傳輸數(shù)據(jù),首先設(shè)置客戶計算機(jī)的LocalPort屬性。服務(wù)器計算機(jī)T注:實際含義是指發(fā)送方只需要將RemoteHost屬性設(shè)置為客戶計算機(jī)T注:實際上的意思是指接收方的IP地址,將RemotePort屬性設(shè)置為客戶計算機(jī)上的LocalPort屬性值,然后調(diào)用SendData方法開始發(fā)送數(shù)據(jù)。客戶計算機(jī)在DataArrival事件中使用GetData方法檢取數(shù)據(jù)。
 ?
 ?
 Winsock控件的屬性
 ?
 BytesReceived屬性,
 LocalHostName屬性,
 LocalIP屬性,
 LocalPort屬性,
 RemoteHost屬性(ActiveX控件),
 SocketHandle屬性,
 State屬性(Winsock控件),
 Protocol屬性(Winsock控件),
 Name屬性,
 Parent屬性,
 RemoteHost屬性(ActiveX控件),
 RemotePort屬性(ActiveX控件),
 Index屬性(ActiveX控件),
 Tag屬性(ActiveX控件),
 Object屬性(ActiveX控件)。
 ?
 Winsock控件的方法
 ?
 Accept方法,
 Bind方法,
 Close方法(Winsock控件),
 Listen方法,PeerData方法,
 SendData方法,
 GetData方法(WinSock控件),
 GetData方法(ActiveX控件)。
 ?
 Winsock控件的事件
 ?
 Close事件,
 ConnectionRequest事件,
 DataArrival事件,
 SendComplete事件,
 SendProgress事件T注:該事件表示開始發(fā)送了,發(fā)送中,好像一般用不到,所以沒有說明
 Error事件,
 Connect事件(Winsock控件),
 Connect事件。
 ?
 請參閱可捕獲的Internet Transfer 控件錯誤,使用Winsock控件。
 ?
 ?
 ?
 以下的內(nèi)容以字母為序排列
 ?
 Accept方法
 只對于TCP服務(wù)器應(yīng)用程序適用。
 該方法用于在處理ConnectionRequest事件時接受連入請求。
 應(yīng)用于Winsock控件。
 語法object.Accept requested
 object是Winsock控件的對象表達(dá)式。
 數(shù)據(jù)類型Long
 返回值Void
 說明
 在ConnectionRequest事件中使用Accept方法。
 ConnectionRequest事件相應(yīng)的參數(shù)RequestID也應(yīng)傳遞給Accept方法。下面是一個例子:
 Private Sub Winsock1_ConnectionRequest _(ByVal requestID As Long)
 ' Close the connection if it is currently open
 ' by testing the State property.
 If Winsock1.State <> sckClosed Then 
 Winsock1.Close
 ' Pass the value of the requestID parameter to the' Accept method.
 Winsock1.Accept requested
 End Sub
 T注:該例寫得不是太好,應(yīng)在新的控件實例中使用該方法,即動態(tài)地加載(LOAD)一個新的WINSOCK控件,用新控件而不是處于監(jiān)聽狀態(tài)的控件去連接
 請參閱Connect方法,ConntectionRequest事件。
 下面示例的例子列出了使用TCP連接Winsock控件必須的代碼,使用RequestID標(biāo)識請求,該參數(shù)傳遞給接受請求的Accept方法。
 Private Sub WinsockTCP_ConnectionRequest _(requestID As Long)
 If Winsock1.State <> sckClosed Then
 Winsock1.Close
 Winsock.Accept requested
 End Sub
 T注:這就對了!請注意,這次換了個新的SOCK來進(jìn)行連接,但好像又少了個ENDIF!唉,真是誤人子弟:)
 ?
 Bind方法
 指定TCP連接中使用的LocalPort和LocalIP。T注:該用法比較少見,更多的是用在UDP通訊中,指定服務(wù)器駐守的端口如果你有多個協(xié)議適配器,使用該方法。應(yīng)用于Winsock控件。
 語法
 object.Bind LocalPort, LocalIP
 Bind方法的語法有如下幾個部分:
 部分?????????????????? 描述
 object????? 一個Winsock控件的對象表達(dá)式
 localPort?????? 建立連接所使用的端口號
 localIP???? 建立連接所使用的本地IP地址
 說明
 在調(diào)用Listen方法之前你必須調(diào)用Bind方法T注:未必:)在UDP通訊的服務(wù)器端,倒是要先調(diào)用BIND方法!
 請參閱RemoteHost屬性(ActiveX控件),RemotePort屬性(ActiveX控件)。
 ?
 BytesReceived屬性
 返回接受數(shù)據(jù)的數(shù)量(當(dāng)前接受緩沖區(qū)中的數(shù)據(jù))。使用GetData方法檢取數(shù)據(jù)。在設(shè)計時不可用, 在運行時是只讀的。
 應(yīng)用于Winsock控件。
 語法object.BytesReceived
 object是Winsock控件的對象表達(dá)式。
 返回值Long
 請參閱DataArrival事件。
 ?
 Close事件
 當(dāng)遠(yuǎn)程計算機(jī)關(guān)閉連接T注:只有TCP是"連接"的,UDP是無"連接"的,或者反過來說,本手冊說"連接"時都是指的TCP時產(chǎn)生該事件。應(yīng)用程序應(yīng)使用Close方法正確地關(guān)閉一個TCP連接。
 應(yīng)用于Winsock控件。
 語法object_Close()
 object是Winsock控件的對象表達(dá)式。
 參數(shù)???? 沒有
 請參閱Close方法(Winsock控件)。
 Close方法
 關(guān)閉客戶或服務(wù)器應(yīng)用程序的TCP連接或監(jiān)聽插槽。
 應(yīng)用于Winsock控件。
 語法object.Close
 object是一個Winsock控件的對象表達(dá)式。
 參數(shù)??????? 沒有
 返回值????? Void
 請參閱Close事件。
 ?
 Connect 事件 
 當(dāng)一個 Connect 操作完成時發(fā)生。
 應(yīng)用于Winsock控件。
 語法object.Connect()
 object 置換元代表一個對象表達(dá)式,其值是一個 Winsock 控件。說明使用 Connect 事件確認(rèn)已經(jīng)成功建立了T注:該事件很重要,建議使用該事件而不是別的方法(如STATE的值)來判斷一個連接是否已經(jīng)成功
 ?
 Connect方法
 返回與遠(yuǎn)程計算機(jī)的連接T注:就是去連接!
 應(yīng)用于Winsock控件。
 語法object.Connect remoteHost, remotePort
 Connect方法的語法有如下幾個部分:
 部分????????????????????? 描述
 object????? 一個Winsock控件的對象表達(dá)式
 remoteHos???? 要連接的遠(yuǎn)程計算機(jī)的名字
 remotePort?? 要連接的遠(yuǎn)程計算機(jī)的端口號
 返回值???????? 沒有
 說明
 當(dāng)試圖建立一個TCP連接時,你必須調(diào)用Connect方法。
 請參閱Accept方法,ConnectionRequest事件,RemoteHost屬性(ActiveX控件),RemotePort屬性(ActiveX控件)。
 ?
 ConnectionRequest事件
 當(dāng)遠(yuǎn)程計算機(jī)請求一個連接時產(chǎn)生該事件。只對于TCP服務(wù)器應(yīng)用程序適用。
 當(dāng)有一個連入請求時就觸發(fā)該事件。
 該事件觸發(fā)之后,RemoteHostIP和RemotePort屬性中保存了客戶機(jī)的信息。
 應(yīng)用于Winsock控件。
 語法object_ConnectionRequest ( requestID As Long)
 ConnectionRequest事件的語法有如下幾個部分:
 部分???????????????????? 描述
 object????? 一個Winsock控件的對象表達(dá)式
 requested?????????? 連入請求標(biāo)識符。
 該參數(shù)應(yīng)傳遞給第二個控件實例的Accept方法,說明服務(wù)器可以確定是否接受一個連入請求。如果沒有接受連入請求,在客戶將得到Close事件。
 適用Accept方法(在新的控件實例中)接受連入請求。
 請參閱Accept方法,Connect方法。
 ?
 DataArrival事件
 當(dāng)新數(shù)據(jù)到達(dá)時產(chǎn)生該事件。
 應(yīng)用于Winsock控件。
 語法object_DataArrival (bytesTotal As Long)
 DataArrival事件的語法有如下幾個部分:
 部分??????????????????? 描述
 object???????? 一個Winsock控件的對象表達(dá)式
 bytesTotal????? 長整數(shù):可以檢取數(shù)據(jù)的總數(shù)
 說明
 如果你不在一次GetData調(diào)用中檢取所有的數(shù)據(jù)則不產(chǎn)生該事件。只有當(dāng)新數(shù)據(jù)到來時才觸發(fā)該事件。可以使用BytesReceived屬性檢查可檢取數(shù)據(jù)的數(shù)量。
 請參閱BytesReceived屬性,SendData方法,SendComplete事件,SendProgress事件。
 下面示例的例子在Winsock控件的DataArrival事件中使用了GetData方法。當(dāng)產(chǎn)生該事件時,代碼調(diào)用GetData方法檢取數(shù)據(jù)并將其保存在一個字符串中。然后將數(shù)據(jù)寫入一個TextBox控件。
 Private Sub Winsock1_DataArrival _(ByVal bytesTotal As Long)
 Dim strData As String
 Winsock1.GetData strData, vbString
 Text1.Text = Text1.Text & strData
 End Sub
 ?
 Error事件
 后臺進(jìn)程發(fā)生錯誤時產(chǎn)生該事件(如連接失敗,后臺發(fā)送或檢取數(shù)據(jù)失敗等)。
 應(yīng)用于Winsock控件。
 語法object_Error(number As Integer, Description As String, Scode As Long,Source As String, HelpFile as String, HelpContext As Long, CancelDisplay AsBoolean).
 Error事件的語法有如下幾個部分:
 部分???????????????????? 描述
 object???????? 一個Winsock控件的對象表達(dá)式
 number??????? 一個整數(shù),指定錯誤碼請參閱"設(shè)置"中的常量
 description?? 包含錯誤消息的字符串scode長
 SCODEsource?? 描述錯誤源的字符串
 HelpFile????? 包含幫助文件名的字符串
 HelpContextHelp??????? ?文件環(huán)境
 CancelDisplay?? 指明是否取消該顯示動作缺省是False,顯示缺省的錯誤消息。如果你不想使用缺省的錯誤消息,可以將其設(shè)置為True
 設(shè)置
 number值的設(shè)置如下:
 常量????????????????? 值???? 描 述
 SckOutOfMemory??????????? 7????? 內(nèi)存不足
 SckInvalidPropertyValue?? 380??? 屬性值無效
 SckGetNotSupported??????? 394??? 不能讀取屬性值
 SckSetNotSupported??????? 383??? 屬性是只讀的
 SckBadState?????????????? 40006? 連接事務(wù)或請求的協(xié)議或
 連接狀態(tài)不正確
 SckInvalidArg???????????? 40014?? 傳遞給函數(shù)的參數(shù)格式
 不正確或范圍不對
 SckSuccess??????????????? 40017?? 成功
 SckUnsupported??????????? 40018?? 不支持的變量類型
 SckInvalidOp????????????? 40020?? 對于當(dāng)前的狀態(tài),該
 操作不正確
 SckOutOfRange???????????? 40021?? 參數(shù)超出了范圍
 SckWrongProtocol????????? 40026?? 連接事務(wù)或請求的協(xié)議不正確
 SckOpCanceled???????????? 1004??? 操作被取消
 SckInvalidArgument??????? 10014?? 請求的地址是廣播地
 址,但沒有設(shè)置標(biāo)記
 SckWouldBlock??????????? 10035??? 插槽是非阻塞的,指
 定的操作將被阻塞
 SckInProgress??????????? 10036??? 過程中有阻塞的
 Winsock操作
 SckAlreadyComplete?????? 10037??? 操作完成。過程中沒
 有阻塞的Winsock操作
 SckNonRecoverableError?? 11003??? 不可恢復(fù)性錯誤
 SckNoData1?????????????? 1004???? 名字有效,所請求的類
 型沒有數(shù)據(jù)記錄
 ?
 GetData方法
 檢取當(dāng)前的數(shù)據(jù)塊,將其保存在一個Variant類型的變量中T注:實際上只有字符串/字節(jié)組兩種類型,參見講座的第四講。
 應(yīng)用于Winsock控件。
 返回值Void
 語法object.GetData data [,type] [,maxLen]
 GetData方法的語法有如下幾個部分:
 部分??????????????? 描述
 object?????? 一個Winsock控件的對象表達(dá)式
 data??????? 保存取回來的數(shù)據(jù)的地方/變量。
 如果沒有足夠的空間保存數(shù)據(jù),則data設(shè)置為Empty
 type,可選參數(shù)。要檢取的數(shù)據(jù)類型,如"設(shè)置"中所示
 maxLen,可選參數(shù)。在檢取字節(jié)矩陣或字符串時指定檢取長度。如果沒有指定該參數(shù),則檢取字節(jié)矩陣或字符串中的所有數(shù)據(jù)。如果數(shù)據(jù)類型不是字節(jié)矩陣或字符串,則忽略該參數(shù)
 設(shè)置
 type值的設(shè)置如下:
 描述?????????????????? 常量
 
?
?
?
?
?
?
Byte??????????????? vbByte
Integer???????????? vbInteger
 Long??????????????? vbLong
 Single????????????? vbSingle
 Double????????????? vbDouble
 Currency??????????? vbCurrency
 Date??????????????? vbDate
 Boolean???????????? vbBoolean
 
SCODE?????????????? vbError
String????????????? vbString
 Byte矩陣?????????? vbArray + vbByte
 說明
 通常在DataArrival事件中使用GetData方法,其包含了一個totalBytes參數(shù)。如果你指定的maxLen比totalBytes參數(shù)小,則將得到一個10040警告,表明其余數(shù)據(jù)將丟失T注:非萬不得已,不要用該參數(shù),應(yīng)該一次性地將數(shù)據(jù)全部取回,再慢慢處理
 ?
 Listen方法
 創(chuàng)建一個插槽,并設(shè)置為監(jiān)聽模式。
 該方法只適用于TCP連接。
 應(yīng)用于Winsock控件。
 語法object.Listen
 object是一個Winsock控件的對象表達(dá)式。
 參數(shù)??????? 沒有
 返回值????? Void
 說明
 當(dāng)有連入請求時產(chǎn)生ConnectionRequest事件。
 在處理ConnectionRequest事件時,應(yīng)用程序應(yīng)使用Accept(在新的控件實例)方法接受連接。
 請參閱Connect方法,Close方法(Winsock控件)。
 ?
 LocalHostName屬性
 返回本地計算機(jī)的名字。只讀,在設(shè)計時不可用。
 應(yīng)用于Winsock控件。
 語法object.LocalHost Name
 object是一個Winsock控件的對象表達(dá)式。
 返回值????? String
 ?
 LocalIP屬性
 返回本地計算機(jī)的IP地址。只讀屬性,在設(shè)計時不可用。
 應(yīng)用于Winsock控件。
 語法object.LocalIP
 object是Winsock控件的對象表達(dá)式。
 數(shù)據(jù)類型String
 ?
 LocalPort屬性
 返回或設(shè)置本地使用的端口??勺x寫,在設(shè)計時可用。
 對于客戶,這將指定發(fā)送數(shù)據(jù)的端口。如果應(yīng)用程序不需要特定的端口,指定為0。在這種情況下,控件將隨機(jī)選擇一個端口。連接建立后,該本地端口就用于TCP連接。對于服務(wù)器,這是監(jiān)聽的本地端口。如果指定為0,則隨機(jī)選用一個端口。在調(diào)用了Listen方法之后,屬性包含了實際選中的端口。
 應(yīng)用于Winsock控件。
 語法object.LocalPort=long
 object是一個Winsock控件的對象表達(dá)式。
 數(shù)據(jù)類型?????? Long T注:講座中好像搞錯了,實際上長短均可:)
 說明
 通常使用端口0在兩臺計算機(jī)之間動態(tài)建立連接。例如,希望服務(wù)器回調(diào)的客戶可以使用端口0隨機(jī)選中一個端口號,該端口號將傳遞給遠(yuǎn)程的服務(wù)器。
 ?
 PeekData方法
 與GetData方法類似,只是其不從輸入隊列中刪除數(shù)據(jù)。
 應(yīng)用于Winsock控件。
 語法object.PeekData data [,type] [,maxLen]
 PeekData方法的語法有如下幾個部分:
 部分????????????????? 描述
 object?????? 一個Winsock控件的對象表達(dá)式
 data???????? 保存取回的數(shù)據(jù)的地方/變量
 如果沒有足夠的空間保存數(shù)據(jù),則data設(shè)置為Empty。
 type可選參數(shù)。要檢取的數(shù)據(jù)類型,如"設(shè)置"中所示。缺省是vbArray+ vbByte
 maxLen可選參數(shù)。在檢取字節(jié)矩陣或字符串時指定檢取長度。如果沒有指定該參數(shù),則檢取字節(jié)矩陣或字符串中的所有數(shù)據(jù)。
 如果數(shù)據(jù)類型不是字節(jié)矩陣或字符串,則忽略該參數(shù)
 設(shè)置
 type值的設(shè)置如下:
 描述???????????????????? 常量
 Byte?????????????????? vbByte
 Integer??????????????? vbInteger
 Long?????????????????? vbLong
 Single???????????????? vbSingle
 Double???????????????? vbDouble
 Currency?????????????? vbCurrency
 Date?????????????????? vbDate
 Boolean??????????????? vbBoolean
 SCODE????????????????? vbError
 String???????????????? vbString
 Byte矩陣????????????? vbArray + vbByte
 返回值????????? Void
 說明
 如果類型指定為vbString,則數(shù)據(jù)返回給用戶之前轉(zhuǎn)換為UUICODE。
 請參閱GetData方法(Winsock控件)。
 ?
 Protocol屬性
 返回或設(shè)置Winsock控件使用的協(xié)議,TCP或UDP。
 應(yīng)用于Winsock控件。
 語法object.Protocol [=protocol]
 object是Winsock控件的對象表達(dá)式。
 設(shè)置protocol值的設(shè)置如下:
 常量???????? ?????????值????????? 描述
 sckTCPProtocol??????? 0???? 缺省。使用TCP協(xié)議
 sckUDPProtocol??????? 1???? 使用UDP協(xié)議
 返回值?????? Void
 說明
 在重新設(shè)置該屬性之前必須關(guān)閉控件(使用Close方法)。
 ?
 RemoteHostIP屬性
 返回遠(yuǎn)程計算機(jī)的IP地址。對于客戶應(yīng)用程序,使用Connect方法建立連接之后,該屬性包含了遠(yuǎn)程計算機(jī)IP字符串。對于服務(wù)器應(yīng)用程序,進(jìn)來一個連接請求時,該屬性包含了初始化請求的遠(yuǎn)程計算機(jī)的IP字符串。在使用UDP協(xié)議時,在DataArrival事件產(chǎn)生后,該屬性包含了發(fā)送UDP數(shù)據(jù)的遠(yuǎn)程計算機(jī)的IP地址。
 應(yīng)用于Winsock控件。
 語法object.RemoteHostIP
 object是Winsock控件的對象表達(dá)式。
 數(shù)據(jù)類型String
 ?
 SendComplete事件
 當(dāng)發(fā)送操作完成時產(chǎn)生該事件。
 應(yīng)用于Winsock控件。
 語法object_SendComplete
 object是一個Winsock控件的對象表達(dá)式。
 參數(shù)???????? 沒有
 請參閱DataArrival事件,SendProgress事件。
 ?
 SendData方法
 給遠(yuǎn)程計算機(jī)發(fā)送數(shù)據(jù)。
 返回值Void
 應(yīng)用于Winsock控件。
 語法object.SendData data
 SendData方法的語法有如下幾個部分:
 部分???????????????? 描???? 述
 object????????? 一個Winsock控件的對象表達(dá)式
 data??????????? 要發(fā)送的數(shù)據(jù)T注:只能發(fā)送字符串/字節(jié)組,對
 于二進(jìn)制數(shù)據(jù),應(yīng)使用字節(jié)矩陣
 說明
 當(dāng)傳遞UNICODE字符串時,在發(fā)送之前轉(zhuǎn)換為ANSI字符串。
 ?
 ?
 SendProgress事件
 在發(fā)送數(shù)據(jù)時產(chǎn)生該事件。
 應(yīng)用于Winsock控件。
 語法object_SendProgress (bytesSent As Long, bytesRemaining As Long)
 SendProgress事件的語法有如下幾個部分:
 部分???????????????? 描????? 述
 object?????? 一個Winsock控件的對象表達(dá)式
 bytesSent?? 從上次觸發(fā)該事件到現(xiàn)在已發(fā)送數(shù)據(jù)的字節(jié)數(shù)
 bytesRemaining? 在發(fā)送緩沖區(qū)中等待發(fā)送數(shù)據(jù)的字節(jié)數(shù)
 請參閱DataArrival事件,SendComplete事件。
 ?
 SocketHandle屬性
 返回一個值,該值與Winsock控件用來與Winsock層通信所用的插槽句柄相對應(yīng)。該屬性是只讀的,在設(shè)計時不可用。
 應(yīng)用于Winsock控件。
 語法object.SocketHandle
 object是一個Winsock控件的對象表達(dá)式。
 數(shù)據(jù)類型????????? Long
 說明
 該參數(shù)將傳遞給Winsock API。
 State屬性
 返回控件的狀態(tài),以枚舉類型表示。該屬性是只讀的,在設(shè)計時不可用。
 應(yīng)用于Winsock控件。
 語法object.State
 object是一個Winsock控件的對象表達(dá)式。
 數(shù)據(jù)類型?????? Integer
 設(shè)置
 State屬性的設(shè)置如下:
 常量??????????????????? 值?? 描述
 SckClosed??????????????? 0?? 缺省。關(guān)閉
 SckOpen????????????????? 1?? 打開
 SckListening???????????? 2?? 監(jiān)聽
 SckConnectionPending???? 3?? 連接未決
 SckResolvingHost???????? 4?? 解析主機(jī)
 SckHostResolved????????? 5?? 主機(jī)被解析
 SckConnecting??????????? 6?? 連接
 SckConnected???????????? 7?? 已連接
 SckClosing?????????????? 8?? 對方在關(guān)閉連接
 SckError???????????????? 9?? 錯誤
 T注:不要過于信任STATE屬性,在可以用事件來判斷的時候,應(yīng)該以所觸發(fā)的事件為準(zhǔn)來判斷當(dāng)前的狀態(tài)。
總結(jié)
以上是生活随笔為你收集整理的Winsock属性 方法介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: C++中WSAAsyncSelect模型
- 下一篇: 读【36岁IT老人再次随笔】的读后感,你
