版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上現(xiàn)在大多數(shù)語言都支持客戶服務(wù)器模式編程,其中VB給我們提供了很好的客戶服務(wù)器編程方式。下面我們用VB來實現(xiàn)TCPIP網(wǎng)絡(luò)編程。TCPIP協(xié)議是Internet最重要的協(xié)議。VB提供了WinSock控件,用于在TCPIP的基礎(chǔ)上進(jìn)行網(wǎng)絡(luò)通信。當(dāng)兩個應(yīng)用程序使用Socket進(jìn)行網(wǎng)絡(luò)通信時,其中一個必須創(chuàng)建Socket服務(wù)器偵聽,而另一個必須創(chuàng)建Socket客戶去連接服務(wù)器。這樣兩個程序就可以進(jìn)行通信了。1創(chuàng)建服務(wù)器,首先創(chuàng)建一個服務(wù)端口號。并開始偵聽是否有客戶請求連接。建立一窗體,并向其增加一個Winsock控件(可在工程菜單中的部件項來添加此控件),添加兩文本框Text
2、1,Text2,和一按鈕Command1。Private Sub Form_Load()SockServer.LocalPort = 2000 服務(wù)器端口號,最好大于1000SockServer.Listen 開始偵聽End SubPrivate Sub Form_Unload(Cancel As Integer)SockServer.CloseEnd SubPrivate Sub SockServer_Close()SockServer.CloseEnd SubPrivate Sub SockServer_ConnectionRequest(ByVal requestID As Long)S
3、ockServer.CloseSockServer.Accept requestID 表示客戶請求連接的ID號End Sub當(dāng)客戶向服務(wù)器發(fā)送數(shù)據(jù)到達(dá)后,產(chǎn)生DataArrival事件,在事件中接收數(shù)據(jù),GetData方法接收數(shù)據(jù)。Private Sub SockServer_DataArrival(ByVal bytesTotal As Long)Dim s As StringSockServer.GetData sText1.Text = sEnd Sub當(dāng)我需要向客戶發(fā)送數(shù)據(jù)時,只需調(diào)用SendData方法。Private Sub Command1_Click()SockServer .
4、SendData Text2.TextEnd Sub2創(chuàng)建客戶。要創(chuàng)建客戶連接服務(wù)器,首先設(shè)置服務(wù)器主機(jī)名,如IP地址、域名或計算機(jī)名,然后設(shè)置服務(wù)器端口,最后連接服務(wù)器。建立一窗體,并向其增加一個Winsock控件(可在工程菜單中的部件項來添加此控件),取名為:SockC1。添加兩文本框Text1,Text2,和一按鈕Command1。Private Sub Form_Load()SockCl.RemoteHost =表示服務(wù)器主機(jī)名SockCl.RemotePort = 2000 表示服務(wù)器端口名SockCl.Connect連接到服務(wù)器End SubPrivate Sub
5、 Form_Unload(Cancel As Integer)SockCl.CloseEnd SubPrivate Sub SockCl_Close()SockCl.CloseEnd SubPrivate Sub SockCl_DataArrival(ByVal bytesTotal As Long)Dim s As StringSockCl.GetData s 接收數(shù)據(jù)到文本框中Text1.Text = sEnd SubPrivate Sub Command1_Click()SockCl.SendData Text2.Text 向服務(wù)器發(fā)送數(shù)據(jù)End Sub3進(jìn)行通信。把這兩個窗體分別編譯成
6、兩個EXE文件,服務(wù)器Server.exe和客戶Client.exe 程序,并把它們分別安裝在服務(wù)器端和客戶端,這樣就可以實現(xiàn)兩者通信了。VB Socket編程(Winsock控件創(chuàng)建TCP/IP客戶機(jī)/服務(wù)器程序)Winsock控件建立在TCP、UDP協(xié)議的基礎(chǔ)上,完成與遠(yuǎn)程計算機(jī)的通信。即使對TCP/IP不太熟悉的用戶,使用該控件也可以在十幾分鐘內(nèi)創(chuàng)建一 個簡單的客戶機(jī)/服務(wù)器程序。下面我們對Winsock控件的事件、方法、屬性按其在程序中出現(xiàn)的順序分別作詳細(xì)的介紹,以便更好地理解程序源代碼。 下面是Winsock控件的相關(guān)屬性,方法和事件。(略去一些暫用不到的) *屬性 - LocalH
7、ostName | 本地機(jī)器名 LocalIP | 本地機(jī)器IP地址 LocalPort | 本地機(jī)器通信程序的端口(0 <端口 <65536) RemoteHost | 遠(yuǎn)程機(jī)器名 RemotePort | 遠(yuǎn)程機(jī)器的通信程序端口 state | 連接的當(dāng)前狀態(tài)(文后有詳細(xì)說明) Protocal | 使用TCP或UDP協(xié)議(這里我們選0-sckTCPProtocal) - *方法 - Listen Listen方法用于服務(wù)器程序,等待客戶訪問。 格式:Winsock對象.listen Connect Connect方法用于向遠(yuǎn)程主機(jī)發(fā)出連接請求 格式:Winsock對象.con
8、nect 遠(yuǎn)程主機(jī)IP,遠(yuǎn)程端口 Accept Accept方法用于接受一個連接請求 格式:Winsock對象.accept Request ID Senddata 此方法用于發(fā)送數(shù)據(jù) 格式:Winsock對象.senddata 數(shù)據(jù) Getdata 用來取得接收到的數(shù)據(jù) 格式:Winsock對象.getdata 變量 ,數(shù)據(jù)類型 ,最大長度 Close 關(guān)閉當(dāng)前連接 格式:Winsock對象.close *事件 - Close | 遠(yuǎn)程機(jī)器關(guān)閉連接時觸發(fā) Connect | 連接建立好,可以進(jìn)行通信時觸發(fā)(客戶端) ConnectRequest | 有請求連接到達(dá)時產(chǎn)生(服務(wù)器端) Data
9、Arrival | 有數(shù)據(jù)到達(dá)時觸發(fā) Error | 發(fā)生錯誤時發(fā)生 SendProgress | 數(shù)據(jù)傳送進(jìn)度 - 服務(wù)器程序的實現(xiàn)過程是: (1)服務(wù)器程序必須設(shè)置好LocalPort屬性,作為偵聽端口,該值為一個整數(shù)(只要是一個其它TCP/IP應(yīng)用程序沒有使用過的值即可)。 (2)使用Listen方法進(jìn)入偵聽狀態(tài),等待客戶機(jī)程序的連接請求。 (3)客戶機(jī)程序發(fā)出連接請求,使服務(wù)器程序產(chǎn)生ConnectionRequest事件,該事件得到一個參數(shù)requestID。 (4)服務(wù)器程序用Accept方法接受客戶機(jī)程序的requestID請求。這樣,服務(wù)器程序就可以用SendData方法發(fā)送數(shù)
10、據(jù)了。Accept方法必須用上一步得到的requestID作為其參數(shù)。 (5)當(dāng)服務(wù)器程序接收到數(shù)據(jù)時,產(chǎn)生DataArrival事件,參數(shù)BytesTotal包含接收到的數(shù)據(jù)字節(jié)數(shù)。在該事件中,可以用GetData方法接收數(shù)據(jù)。 (6)如果接受到Close事件,則用Close方法關(guān)閉TCP/IP連接。 客戶機(jī)程序的實現(xiàn)過程是: (1) 客戶程序設(shè)置Remotehost屬性,以便指定運(yùn)行服務(wù)器程序的主機(jī) 名,該字符串可在“控制面板|網(wǎng)絡(luò)|標(biāo)識|計算機(jī)名”中查到。 (2) 設(shè)置RemotePort屬性,以便指定服務(wù)器程序的偵聽端口。 (3)使用Connect方法,向服務(wù)器提出連接請求。 (4)服
11、務(wù)器接受客戶機(jī)程序的請求,客戶機(jī)程序產(chǎn)生Connect事件,就可以用SendData方法發(fā)送數(shù)據(jù)了。 (5)當(dāng)客戶機(jī)程序接收到數(shù)據(jù)時,產(chǎn)生DataArrival事件,參數(shù)BytesTotal包含接收到的數(shù)據(jù)字節(jié)數(shù)。在該事件中,可以用GetData方法接收數(shù)據(jù)。 (6)如果接受到Close事件,則用Close方法關(guān)閉連接。 Winsock控件還有兩個重要的屬性,即Protocol和State。Protocol設(shè)定使用的協(xié)議是TCP還是UDP:取值 sckTCPProtocol表示TCP, 取值sckUDPProtocol則表示UDP。因為Winsock控件的缺省設(shè)置是sckTCPProtocol
12、,所以程序中并沒有使用 Protocol屬性。State屬性反映的是當(dāng)前TCP/IP的連接狀態(tài),取值如表1所示。 表1 Winsock控件的State屬性及其描述 常數(shù) 值 描述 SckClosed 0 缺省值,關(guān)閉 SckOpen 1 打開 SckListening 2 偵聽 SckConnectionPending 3 連接掛起 SckResolvingHost 4 識別主機(jī)SckHostResolved 5 已識別主機(jī) SckConnecting 6 正在連接 SckConnected 7 已連接 SckClosing 8 同級人員正在關(guān)閉連接 SckError 9 錯誤 先在一臺計算機(jī)
13、上運(yùn)行服務(wù)器程序,此時窗口上只有一個“退出”按鈕。 再在另一臺計算機(jī)上運(yùn)行客戶機(jī)程序,在“連接”按鈕右邊的文本框中輸入服務(wù)器的主機(jī)名后單擊“連接”按鈕。如果連接成功,則服務(wù)器和客戶機(jī)程序窗口都會出 現(xiàn)兩個文本框。這時,兩端都可以在上面的文本框中輸入文字,這些文字會立即在下面的文本框中出現(xiàn)。 服務(wù)器程序使用的控件如下: (1)Command1:退出按鈕; (2)textsend:發(fā)送數(shù)據(jù)文本框; (3)Winsockserver: 服務(wù)器Winsock; (4)textget :接收數(shù)據(jù)文本框。 服務(wù)器程序的界面如圖所示。 服務(wù)器程序的源代碼如下: Private Sub Command1_Cl
14、ick() End End Sub Private Sub Form_Load() textsend.Visible = False textget.Visible = False Winsockserver.LocalPort = 1001 Winsockserver.Listen End Sub Private Sub textsend_Change() Winsockserver.SendData textsend.Text End Sub Private Sub Winsockserver_Close() Winsockserver.Close End End SubPrivate S
15、ub Winsockserver_ConnectionRequest(ByVal requestID As Long) textsend.Visible = True textget.Visible = True If Winsockserver.State <> sckClosed Then Winsockserver.Close Winsockserver.Accept requestID End Sub Private Sub Winsockserver_DataArrival(ByVal bytesTotal As Long) Dim tmpstr As StringWin
16、sockserver.GetData tmpstr textget.Text = tmpstr End Sub 客戶機(jī)程序使用的控件如下: (1)Command1:退出按鈕; (2)Command2:連接按鈕; (3)Winsockclient:客戶Winsock; (4)Text1:主機(jī)名文本框; (5)Textsend:發(fā)送數(shù)據(jù)文本框; (6)Textget:接收數(shù)據(jù)文本框; 客戶機(jī)程序的源代碼如下: Private Sub Command1_Click() End End Sub Private Sub Command2_Click() Winsockclient.Connect End
17、 Sub Private Sub Form_Load() textsend.Visible = False textget.Visible = False Winsockclient.RemotePort = 1001 Winsockclient.RemoteHost = "sccdsz" End Sub Private Sub Text1_Change() Winsockclient.RemoteHost = Text1.Text End Sub Private Sub textsend_Change() Winsockclient.SendData textsend.T
18、ext End Sub Private Sub Winsockclient_Close() Winsockclient.Close End End Sub Private Sub winsockclient_Connect() textsend.Visible = True textget.Visible = True Command2.Visible = False End Sub Private Sub winsockclient_DataArrival(ByVal bytesTotal As Long) Dim tmpstr As String Winsockclient.GetData
19、 tmpstr textget.Text = tmpstr End Sub1 引言 隨著網(wǎng)絡(luò)通信的興起與迅速發(fā)展,TCP/IP協(xié)議已成為計算機(jī)網(wǎng)絡(luò)中最主要的傳輸協(xié)議,TCP/IP傳輸協(xié)議也越來越為人所熟知。目前的Internet 網(wǎng)就是基于TCP/IP協(xié)議的互聯(lián)網(wǎng)絡(luò)。TCP/IP除了用于廣域外,在局域網(wǎng)中也廣泛應(yīng)用。 TCP是傳輸控制協(xié)議,它提供了一種可靠的、面向會話連接的數(shù)據(jù)流服務(wù),它可以在一個分組可能發(fā)生丟失、破壞、重復(fù)、延遲和亂序的不可靠物理網(wǎng)絡(luò)之上通過確認(rèn)、流控、復(fù)用同步等自動糾錯技術(shù)提供一種可靠的進(jìn)程間通信機(jī)制,
20、從而充分保證用戶數(shù)據(jù)傳送的可靠和有序性。使用TCP協(xié)議通信時,TCP建立并控制數(shù)據(jù)發(fā)送方與接收方的會話關(guān)系,當(dāng)接收方正確收到數(shù)據(jù)后,必須向發(fā)送方發(fā)送確認(rèn)信息。如果發(fā)送方在指定時間內(nèi)未能收到確認(rèn)信息,將重發(fā)數(shù)據(jù)包。 IP指分組交換協(xié)議,是聯(lián)網(wǎng)的主機(jī)之間定義數(shù)據(jù)包傳送路由的規(guī)則,它的基本任務(wù)是通過網(wǎng)絡(luò)傳送數(shù)據(jù)報,各個IP數(shù)據(jù)報之間是相互獨立的。IP本身沒有連接協(xié)議,在交換數(shù)據(jù)前不會建立會話關(guān)系。IP收到數(shù)據(jù)后也不確認(rèn),發(fā)送方和接收方都不檢測數(shù)據(jù)傳輸?shù)恼_性。所以僅有IP是不可靠的,不能確保正確傳輸數(shù)據(jù)。TCP與IP的組合則構(gòu)成了功能完整的傳輸協(xié)議。 &
21、#160; 在TCP/IP網(wǎng)絡(luò)應(yīng)用中,多數(shù)網(wǎng)絡(luò)應(yīng)用程序是使用客戶/服務(wù)器模型方式,客戶向服務(wù)器發(fā)出服務(wù)請求,服務(wù)器作出應(yīng)答響應(yīng),服務(wù)器通常在一個眾所周知的地址偵聽客戶向服務(wù)器發(fā)出的請求,服務(wù)進(jìn)程這時一直是處于休眠狀態(tài),直到有一個客戶程序提出連接請求。服務(wù)器作出應(yīng)答,并為客戶提供相應(yīng)的服務(wù)??蛻?服務(wù)器模型最重要的特點是非對等相互作用,客戶與服務(wù)器處于不平等的地位。服務(wù)器擁有客戶機(jī)所不具備的各種軟硬件資源和運(yùn)算處理能力,服務(wù)器提供服務(wù),客戶請求服務(wù),這種模式適應(yīng)了網(wǎng)絡(luò)資源、運(yùn)算能力、信息分布不均等現(xiàn)象,成為IP應(yīng)用的主要模式。Internet中的WWW、FTP、Telnet、E-ma
22、il等許多典型應(yīng)用都是采用客戶/服務(wù)器模型方式。 Visual Basic是Windows環(huán)境下簡單、易學(xué)、高效的可視化編程語言開發(fā)系統(tǒng),以其所見即所得的可視化界面設(shè)計風(fēng)格和32位面向?qū)ο蟮某绦蛟O(shè)計等特點,已廣泛地應(yīng)用于各個領(lǐng)域,是很多計算機(jī)軟件開發(fā)人員采用的開發(fā)工具。VB不但提供了良好的界面設(shè)計能力,而且在網(wǎng)絡(luò)通信方面的功能也很強(qiáng)。采用VB開發(fā)網(wǎng)絡(luò)通信應(yīng)用軟件十分方便,尤其軟件界面設(shè)計非常便捷,編程工作量較小,開發(fā)周期短。 Visual Basic6.0中提供了Winsock控件,用于支持網(wǎng)絡(luò)中兩臺以上計算機(jī)之間進(jìn)行通信
23、。Winsock控件提供了多樣化的屬性和方法來實現(xiàn)網(wǎng)絡(luò)通信。通過設(shè)置Winsock控件屬性及調(diào)用控件方法就能夠?qū)崿F(xiàn)TCP或UDP方式的網(wǎng)絡(luò)通信。因此,使用Winsock控件編寫網(wǎng)絡(luò)通信程序的過程,實際上就是設(shè)置Winsock控件屬性和調(diào)用控件方法的過程。利用這個控件,編程人員可以輕松地編寫出TCP/IP客戶服務(wù)器程序。 2 Winsock控件 Winsock控件是不可視控件,它提供了訪問TCP和UDP網(wǎng)絡(luò)服務(wù)非常簡便的途徑,使編程人員開發(fā)客戶/服務(wù)器應(yīng)用程序時,不必了解TCP的細(xì)節(jié)或調(diào)用低級的WinsockAP
24、Is函數(shù),只通過設(shè)置Winsock控件的屬性并調(diào)用其方法,就可直接連接到一臺遠(yuǎn)程計算機(jī)進(jìn)行,并可實現(xiàn)雙向數(shù)據(jù)交換。Microsoft Access、Visual Baisc、Visual C+或Visual FoxPro都可用其編寫客戶服務(wù)器程序。 如果訪問TCP傳輸控制協(xié)議服務(wù)功能,則須建立連接并實現(xiàn)主機(jī)間點對點通信。如果訪問UDP數(shù)據(jù)文報協(xié)議功能,則不建立連接,發(fā)送數(shù)據(jù)將以廣播方式上網(wǎng)傳輸。 3 TCP/IP客戶服務(wù)器程序設(shè)計方法 使用TCP/IP協(xié)議通訊,首先要指定通信
25、方式為TCP方式,將Winsock控件的Protocol屬性設(shè)置為sckTCPProtocol.然后,按TCP通信協(xié)議規(guī)定,先要申請建立網(wǎng)絡(luò)連接,然后才能傳輸數(shù)據(jù)。 3.1服務(wù)器程序開始偵聽網(wǎng)絡(luò) 服務(wù)器程序窗體中有三個Winsock控件,Name分別為sckServer、sckBusy和sckListen. 其中sckListen是偵聽控件;sckBusy是;sckServer連接控件。偵聽控件和連接控件不能是同一個Winsock控件。 服務(wù)器程序必須
26、首先偵聽網(wǎng)絡(luò),等待客戶的連接申請,才有可能建立網(wǎng)絡(luò)連接。服務(wù)器程序開始偵聽網(wǎng)絡(luò)前,需要為偵聽用(sckListen)控件的LocalPort屬性設(shè)置通信接口,然后調(diào)用Listen方法。服務(wù)器程序開始偵聽網(wǎng)絡(luò)的程序代碼如下: sckListen.LocalPort=4477 sckListen.Listen '偵聽網(wǎng)絡(luò) 3.2客戶程序申請連接 當(dāng)服務(wù)器程序已經(jīng)啟動運(yùn)行并開始偵聽網(wǎng)絡(luò)后,在客戶程序申請連接前,需要為客戶Winsock控件的RemodeHost屬性設(shè)置遠(yuǎn)程主
27、機(jī),為RemodePort屬性設(shè)置通信接口,然后再調(diào)用Connect方法向服務(wù)器程序申請連接。 設(shè)置遠(yuǎn)程主機(jī)名,可以是計算機(jī)名也可是IP地址。如果是主機(jī)計算機(jī)名,則需要系統(tǒng)翻譯為相應(yīng)的IP地址;如果是主機(jī)IP地址,則直接進(jìn)行連接。 申請連接的程序代碼如下: sckClient.Protocol = sckTCPProtocol '設(shè)置協(xié)議為TCP方式'IP地址""代表本機(jī),與本機(jī)的實際地址無關(guān)sckClient.RemoteHost = "127.0
28、.0.1"""'設(shè)置遠(yuǎn)程主機(jī)接口號,該值必須與設(shè)置遠(yuǎn)程主機(jī)服務(wù)器程序的接口號一致sckClient.RemotePort = 4477sckClient.Connect '申請連接 3.3服務(wù)器程序應(yīng)答連接請求 服務(wù)器程序啟動偵聽網(wǎng)絡(luò)后,當(dāng)客戶程序執(zhí)行Connect方法申請連接時,服務(wù)器程序的偵聽控件(sckListen)觸發(fā)ConnectionRequest事件,并傳遞連接請求句柄。編程人員需要在該當(dāng)事件程序中調(diào)用連接控件(sckServer
29、)的Accept方法實現(xiàn)連接。 服務(wù)器程序應(yīng)答連接的程序代碼如下: Private Sub sckListen_ConnectionRequest(ByVal requestID As Long)sckServer.Accept requestID '應(yīng)答連接請求End Sub 當(dāng)服務(wù)器程序執(zhí)行Accept方法建立連接后,客戶程序中的接連控件將觸發(fā)Connect事件通報連接完成,否則觸發(fā)Error事件通報連接失敗??梢栽谠撌录绦蛑屑尤脒B接后的處理程序。 如
30、果要求服務(wù)器程序支持多用戶連接,則需要創(chuàng)建Winsock控件數(shù)組,在連接時動態(tài)生成Winsock控件與客戶程序建立連接。程序代碼應(yīng)修改如下: Private Sub sckListen_ConnectionRequest(ByVal requestID As Long)Dim i As LongIf CurNumber<MaxNumber Then 'MaxNumber為最大連接數(shù),CurNumber為當(dāng)前連接數(shù)For i = 1 To CurNumberIf sckServer(i).State = 0 Then '判斷是否有空閑Winsock控件Exit F
31、orEnd IfNext iIf i = CurNumber ThenCurNumber = CurNumber + 1i = CurNumberEnd IfLoad sckServer(i) '動態(tài)加載Winsock控件sckServer(i).Accept requestIDExit SubEnd IfsckBusy.ClosesckBusy.Accept requestIDEnd Sub 3.4傳送數(shù)據(jù) 當(dāng)服務(wù)器程序和客戶程序連接成功后,可以開始傳送數(shù)據(jù)。建立連接后的服務(wù)器程序和客戶程序都可以發(fā)送
32、或接收數(shù)據(jù)。當(dāng)一方要發(fā)送數(shù)據(jù)時,調(diào)用SendData方法。Dim SendStr As StringSendStr = "連接成功!"Winsock1.SendData SendStr '傳送數(shù)據(jù) 如果一方發(fā)送了數(shù)據(jù),在連接的另一方控件將產(chǎn)生DataArrival事件,在DataArrival事件處理程序中需要調(diào)用GetData方法接收數(shù)據(jù)。接收數(shù)據(jù)類型必須與發(fā)送數(shù)據(jù)的類型一致方可正確接收數(shù)據(jù)。接收數(shù)據(jù)的程序代碼如下: Dim RecStr As StringsckClient.GetData RecStrPrint R
33、ecStr 3.5關(guān)閉連接 當(dāng)應(yīng)用程序結(jié)束數(shù)據(jù)傳送后,必須關(guān)閉連接,釋放系統(tǒng)資源。當(dāng)連接的一方關(guān)閉連接時,可以調(diào)用Close方法。關(guān)閉連接程序代碼如下: sckClient.Close '關(guān)閉連接 一方執(zhí)行關(guān)閉連接后,在連接的另一方控件將產(chǎn)生Close事件。程序需要處理事件,完成關(guān)閉連接的最后工作。該事件的處理代碼如下: Private Sub sckServer_Close()sckServer(Index)
34、.Close '釋放接連Unload sckServer(Index) '刪除控件End Sub 4 使用UDP通信方式程序設(shè)計方法 UDP用戶報文協(xié)議是一個無連接協(xié)議,與TCP協(xié)議操作不同,UDP協(xié)議不使用報文確認(rèn)機(jī)制,不對報文排序,不進(jìn)行流控,因而UDP報文可能出現(xiàn)丟失、重復(fù)、亂序等現(xiàn)象,但由于它的前期工作比TCP少,計算機(jī)不建立連接,因而可以迅速地展開通信,一般用于傳輸少量不重要的數(shù)據(jù)和信息。Winsock控件的UDP通信方式是一種廣播方式,當(dāng)UDP主機(jī)發(fā)送數(shù)據(jù)時,網(wǎng)絡(luò)上所有其
35、它主機(jī)都能收到數(shù)據(jù),UDP通信比TCP方式簡單,由于UDP不需要連接,所以沒有申請連接和關(guān)閉連接的過程。UDP發(fā)送者忽略接收者是否實際收到數(shù)據(jù),而接收者也忽略發(fā)送者是否已發(fā)送了數(shù)據(jù)。這使編寫UDP通信方式的網(wǎng)絡(luò)程序非常簡單。 4.1 設(shè)置服務(wù)器程序中Winsock控件的屬性 在服務(wù)器程序中,需要為Winsock控件的LocalPort屬性設(shè)置通信接口:sckserver.LocalPort=4477 4.2 客戶程序發(fā)送數(shù)據(jù) 當(dāng)UDP主機(jī)要發(fā)送數(shù)據(jù)時,
36、可調(diào)用SendData方法。發(fā)送數(shù)據(jù)程序的代碼如下: Dim SendStr As StringSendStr = "發(fā)送信息!"sckClient.SendData SendStr '傳送數(shù)據(jù)vb映射已知服務(wù)器的方法VB 設(shè)定/取消 網(wǎng)絡(luò)磁盤使用方法: 建立連線 Function AddConnection(ByVal RemoteLocation As String, _ ByVal LocalDriver As String, _ ByVal Passwd As String, _ ByVal UserName As String) As Boole
37、an RemoteLocation : 為網(wǎng)絡(luò)磁盤原始來源,格式為 RemoteComputerShareDirectory LocalDriver : 對應(yīng)本機(jī)的磁盤代號,如: "H:" Passwd : 存取網(wǎng)絡(luò)磁盤的Password,傳Null表示不用密碼 UserName : 存取網(wǎng)絡(luò)磁盤的使用者代號 成功時傳回True,否則為False 例: Call AddConnection("Shihcmias", "x:", vbNullString, "cww") 取消連線 Function CancelCon
38、nection(ByVal LocalDriver As String, _ ByVal ForceClose As Boolean) As Boolean LocalDriver : 對應(yīng)本機(jī)的磁盤代號,如: "H:" ForceClose : True表示強(qiáng)迫結(jié)束連線,而不管有沒有程式正與之連線 成功時傳回True,否則為False 例: Call CancelConnection("x:", True) 以下在.bas Option Explicit Type NETRESOURCE dwScope As Long dwType As Long d
39、wDisplayType As Long dwUsage As Long lpLocalName As String lpRemoteName As String lpComment As String lpProvider As String End Type Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" (lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUse
40、rName As String, ByVal dwFlags As Long) As Long Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias "WNetCancelConnection2A" (ByVal lpName As String, ByVal dwFlags As Long, ByVal fForce As Long) As Long Declare Function WNetGetLastError Lib "mpr.dll" Alias "
41、WNetGetLastErrorA" (lpError As Long, ByVal lpErrorBuf As String, ByVal nErrorBufSize As Long, ByVal lpNameBuf As String, ByVal nNameBufSize As Long) As Long Public Const RESOURCE_PUBLICNET = &H2 Public Const RESOURCETYPE_ANY = &H0 Public Const RESOURCEDISPLAYTYPE_GENERIC = &H0 Public Const RESOURCEUSAGE_CONNECTABLE = &H1 Pu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024葡萄酒年份酒經(jīng)銷商售后服務(wù)與銷售合同3篇
- 2024藥品質(zhì)量檢驗與監(jiān)管合同
- 二零二四年委托創(chuàng)作合同:原創(chuàng)音樂作品委托創(chuàng)作協(xié)議
- 二零二五年度綠色復(fù)墾土地流轉(zhuǎn)合同模板3篇
- 二零二五年度大巴車租賃與綠色出行宣傳合同3篇
- 2025年度餐飲店食品安全風(fēng)險評估合同9篇
- 二零二四年三人共同投資大數(shù)據(jù)科技公司合同3篇
- 2025年度鐵路旅游列車運(yùn)營管理合同3篇
- 2025年度綠色家居產(chǎn)品認(rèn)證服務(wù)合同簡易版2篇
- 2024年環(huán)境工程監(jiān)理研發(fā)合同
- 專升本英語閱讀理解50篇
- 施工單位值班人員安全交底和要求
- 中國保險用戶需求趨勢洞察報告
- 數(shù)字化轉(zhuǎn)型指南 星展銀行如何成為“全球最佳銀行”
- 中餐烹飪技法大全
- 靈芝孢子油減毒作用課件
- 現(xiàn)場工藝紀(jì)律檢查表
- 醫(yī)院品管圈與護(hù)理質(zhì)量持續(xù)改進(jìn)PDCA案例降低ICU病人失禁性皮炎發(fā)生率
- 新型電力系統(tǒng)研究
- 烘干廠股東合作協(xié)議書
- 法院服務(wù)外包投標(biāo)方案(技術(shù)標(biāo))
評論
0/150
提交評論