第一節(jié):Winsock控件的介紹Winsock控件的作用簡單說就是可以用于兩臺或多臺機(jī)器間通信,這里不多說這個(gè)控件的作用了,因?yàn)樵谝院蟮慕榻B中我們會了解到這個(gè)控件的強(qiáng)大功能的,如可以用來做聊天軟件等…… 廢話不多說,來看看他有些什么重要的屬性、方法和事件吧! 在VB6.0中的工具箱里默認(rèn)情況下是沒有這個(gè)控件的,添加方法如下:在工具箱上右擊,選擇[部件],然后在部件對話框中選擇"Microsoft
Winsock Control
6.0",后確定即可。如果沒有這個(gè)復(fù)選框的話,請點(diǎn)擊[瀏覽]按鈕后在打開的[添加ActiveX控件]對話框選擇MSWINSCK.ocx后選擇打
開,再點(diǎn)確定即可。Winsock控件在工具箱中圖標(biāo)為 Winsck的主要屬性:
Winsock的主要方法:
Winsock的主要事件:
這節(jié)我們詳細(xì)介紹了Winsock控件的屬性、方法和事件等,只要擁有這些,我們就可以編很多功能強(qiáng)大的軟件了。在接下來的幾課中我們將以實(shí)例來說明Winsock的應(yīng)用。 第二節(jié):Winsock聊天器實(shí)例上一節(jié)我們介紹了Winsock控件,這節(jié)我們將以一個(gè)聊天器的實(shí)例來說說如何應(yīng)運(yùn)Winsock控件進(jìn)行計(jì)算機(jī)之間的通信。 我也做了一個(gè)聊天器,程序點(diǎn)擊這里下載。 這節(jié)課我們做了用于通信的服務(wù)端和客戶端,在制作他們之前,先看看服務(wù)端和客戶端是如何設(shè)計(jì)的:(注:要復(fù)制本頁代碼時(shí)要注意去掉不正確的字符如?號) 服務(wù)端的設(shè)計(jì):1、設(shè)置好localPort作為偵聽端口 2、使用listen使服務(wù)端處在偵聽狀態(tài) 3、客戶端發(fā)出連接請求后觸發(fā)ConnectionRequest事件 4、在ConnectionRequest中用Accept方法來接收客戶端的連接請求 5、收發(fā)數(shù)據(jù) 客戶端的設(shè)計(jì):1、設(shè)置RemoteHost,即你要連接IP 2、設(shè)置好RemotePort,即通信的端口號,要與服務(wù)端的一致 3、使用Connect方法向服務(wù)端發(fā)出連接請求 4、如果服務(wù)端同意連接請求則觸發(fā)Connect事件 5、收發(fā)數(shù)據(jù) 服務(wù)端的制作:界面如下:
服務(wù)器設(shè)計(jì)第一、二步的實(shí)現(xiàn)(窗體的Load事件):
服務(wù)器設(shè)計(jì)第三、四步的實(shí)現(xiàn)(Winsock的Connect):
服務(wù)器設(shè)計(jì)第五步的實(shí)現(xiàn):
將上面的程序生成一個(gè)EXE文件(名為:Server.exe),然后新建一個(gè)工程以制作客戶端。 客戶端的制作:界面如下:
客戶端設(shè)計(jì)第一、二、三步的實(shí)現(xiàn):
客戶端設(shè)計(jì)第五步的實(shí)現(xiàn)(發(fā)送和接收代碼和服務(wù)器一致,只不過控件名不同而已):
生成EXE文件(名為:Client.exe)。這樣一個(gè)聊天器就做好了,在本機(jī)也可以試試,運(yùn)行方法是先打開Server.exe,后打開 Client.exe,然后在Client.exe點(diǎn)擊連接按鈕,連接地址為"127.0.0.1",確定,然后在下面的文本框輸入內(nèi)容點(diǎn)發(fā)送按鈕即可。 在建立連接后Server.exe的操作方法和Client.exe的操作方法一樣。試試吧! 最后說一句:實(shí)際上我們會發(fā)現(xiàn)這樣的聊天器怎么會分為兩個(gè)部份呢,這樣多不方便。實(shí)際上我們可以合成一個(gè),即在一個(gè)窗體上放一個(gè)wskServer 再放一個(gè)wskClient,這樣就OK了,這里是為了更好的說明就放分成兩個(gè)的。還有就是這個(gè)聊天器是基于TCP協(xié)議,這個(gè)協(xié)議保證了通信的數(shù)據(jù)不會丟 失,這個(gè)協(xié)議只能一對一,但在實(shí)際中我們聊天的對象不會是一個(gè)人吧,這樣就要用到可以一對多但不保證數(shù)據(jù)能完全到達(dá)UDP協(xié)議了,簡單而言TCP用于一對 一,而UDP可以運(yùn)用于一對多。下一節(jié)我們將介紹用Winsock制作一個(gè)簡單的Web服務(wù)器。
第三節(jié):Winsock制作Web服務(wù)器在本節(jié)中,我們將制作一個(gè)簡單的Web服務(wù)器(點(diǎn)擊這里下載源文件)。 按上節(jié)的說法,我們可以把Web服務(wù)器看是一個(gè)服務(wù)端,而瀏覽器則是一個(gè)一個(gè)的客戶端,他們以一個(gè)相同的端口(如HTTP默認(rèn)為80,F(xiàn)TP默認(rèn)為 21),所以就能通信。他們的工作流程大概如下:首先Web服務(wù)器在某一端口上等待瀏覽器的連接,然后瀏覽器向目標(biāo)Web服務(wù)器發(fā)出要求瀏覽某一網(wǎng)頁的請 求,最后Web服務(wù)根據(jù)請求發(fā)送相應(yīng)的網(wǎng)頁源文件給瀏覽器。 用過ASP的都知道,我們有一個(gè)Web服務(wù)器叫IIS,這個(gè)服務(wù)器就是根據(jù)瀏覽器的請求而產(chǎn)生相應(yīng)的源碼然后發(fā)送到用戶的瀏覽器上的。 別的不多說,界面很簡單:
將文本框設(shè)置可以顯示多行文本。為了有別于其他,我們這個(gè)Web服務(wù)器將使用端口124。制作流程如下: 在Form_Load事件中將服務(wù)器的偵聽端口設(shè)為124:
在wskServer的ConnectionRequest事件中接受客戶端(瀏覽器)的連接:
在wskServer控件的DataArrival事件中加當(dāng)瀏覽器的請求文本來時(shí)發(fā)送源代碼過去:
這里在窗體模塊(窗體聲明)中加入一個(gè)發(fā)送源代碼的sendCode的Sub過程:
在cmdClose的Click事件中關(guān)閉窗體和服務(wù):
最后要在wskServer的SendComplete事件中加入如下代碼:
這里制作好了,將工程文件保存在[C:\temp]文件夾中,然后自己做一個(gè)網(wǎng)頁名為index.htm也放在[C:\temp]中。這時(shí)按F5運(yùn)行,然后打開IE,輸入:http://127.0.0.1:124,這下等網(wǎng)頁的顯示吧。 這只是一個(gè)簡單的Web服務(wù)器,只能給你們說明一些原理,下面說幾個(gè)問題: 1、我們?nèi)绾沃揽蛻舳艘氖悄膫€(gè)文件:實(shí)際上我們給Web服務(wù)器發(fā)送連接會有一個(gè)文本請求來說明自己要的是什么文件,比如你把上面的wskServer的DataArrival事件中的 前三行取消注釋,再次按上面的方法來運(yùn)行一次,不過這次把請求網(wǎng)址改為:"http://127.0.0.1/1.htm",那么文本框中會顯示瀏覽器的 請求文本為(以我的瀏覽器為例):
你看第一行就知道客戶端要的是什么文件了。 2、為什么在wskServer的SendComplete事件中要關(guān)閉服務(wù)器:回答這個(gè)問題你可以將wskServer.Close注釋起來再次運(yùn)行,你會發(fā)現(xiàn)要很久(或要刷新網(wǎng)頁)才會有頁面出現(xiàn),這是因?yàn)槿绻?wù)一直在的話,那么瀏覽器以為服務(wù)的數(shù)據(jù)沒有傳完,就一直等待,所以要在傳送完源代碼時(shí)關(guān)閉服務(wù)器。 3、能不能用Winsock做自己的瀏覽器:能。我們可以用Winsock下載網(wǎng)頁的源代碼,但在VB中我們有另一個(gè)功能更強(qiáng)大的控件來做我們的瀏覽器,將在下節(jié)中說明具體的做法。
第四節(jié):Winsock制作多客戶服務(wù)器我們前面的程序都只說到使用Winsock制作一對一的連接,實(shí)際上我們使用控件數(shù)組的話,那么可以制作一個(gè)多客戶連接的服務(wù)器。不過本質(zhì)上還是一對一,不過是服務(wù)器上不只一個(gè)Windsock而已。 我們在窗體上放一個(gè)Winsock,將他的Name改為sckServer,index屬性改為0。然后就是代碼了: clientCount As Integer '定義一個(gè)窗體級變量來記錄客戶的連接數(shù)。
看了代碼明白了吧,所謂多客戶服務(wù)器就是多個(gè)Winsock服務(wù)端在為客戶服務(wù)而已,當(dāng)然我們不用同步的時(shí)候也可以用一個(gè)Winsock來連續(xù)的關(guān)閉、連接來做多客戶服務(wù)器也是可以的。
第五節(jié):Web瀏覽器控件在VB6.0中Web瀏覽器控件是WebBrowser,他的作用是讓我們只要加入少量的代碼,就能做出和IE功能一樣強(qiáng)大的瀏覽器。(點(diǎn)擊這里下載我制作的瀏覽器示例) 將WebBrowser添加到工具箱方法是:添加"部件"中選擇Microsoft Internet Controls(SHDOCVW.dll),后點(diǎn)確定,WebBrowser在工具箱的圖標(biāo)為: WebBrowser的功能強(qiáng)大是由眾多方法、屬性和行為組成的,下面說下它的主要屬性、方法和行為。 WebBrowser的主要屬性:
WebBrowser的主要方法:
WebBrowser的主要事件:
這里簡單說了下WebBrower控件的部份屬性、方法和行為。 下面是一個(gè)示例:
上面的四個(gè)按鈕的名字分別為Command1、Command2、Command3、Command4,下面的文本框?yàn)門ext1,最下面的是一個(gè)WebBrowser,名字為WebBrowser1 在Command1的Click事件加入:WebBrowser1.GoBack 在Command2的Click事件加入:WebBrowser1.GoForward 在Command3的Click事件加入:WebBrowser1.Refresh 在Command4的Click事件加入:If WebBrowser1.Busy = True Then WebBrowser1.Stop 在Text1的KeyPress事件加入:If KeyAscii = 13 Then WebBrowser1.Navigate Text1.Text 按F5運(yùn)行,在文本輸入網(wǎng)址后回車看看效果吧! |
|
|