九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
VB Winsock控件的使用與介紹

第一節(jié):Winsock控件的介紹

Winsock控件的作用簡單說就是可以用于兩臺或多臺機器間通信,這里不多說這個控件的作用了,因為在以后的介紹中我們會了解到這個控件的強大功能的,如可以用來做聊天軟件等……

廢話不多說,來看看他有些什么重要的屬性、方法和事件吧!

在VB6.0中的工具箱里默認情況下是沒有這個控件的,添加方法如下:在工具箱上右擊,選擇[部件],然后在部件對話框中選擇"MicrosoftWinsock Control6.0",后確定即可。如果沒有這個復選框的話,請點擊[瀏覽]按鈕后在打開的[添加ActiveX控件]對話框選擇MSWINSCK.ocx后選擇打開,再點確定即可。Winsock控件在工具箱中圖標為

。

Winsck的主要屬性:

屬性名
說明
BytesReceived
返回接收的數(shù)據(jù),可以用GetData方法來獲取它
LocalHostName
返回本機名
LocalIP
返回本機IP
LocalPort
返回或設置本機所用的端口,如果為0則為隨機產(chǎn)生
Protocol
返回通信所用的協(xié)議
RemoteHostName
返回通信對方的計算機名
RemoteHostIP
返回通信對方的IP
State
返回Winscok的當前狀態(tài),取值如下
  • sckClosed(常量為0):關(guān)閉狀態(tài)
  • sckOpen(常量為1):打開狀態(tài)
  • sckListening(常量為2):偵聽狀態(tài)
  • sckConnectionPending(常量為3):連接狀態(tài)
  • sckResolvingHost(常量為4):解析主機中
  • sckHostResolved(常量為5):已解析主機
  • sckConnecting(常量為6):正在連接
  • sckConnected(常量為7):已經(jīng)連接
  • sckClosing(常量為8):客戶端正在關(guān)閉
  • sckError(常量為9):連接發(fā)生錯誤

Winsock的主要方法:

方法名
作用
listen
使服務器程序處于偵聽狀態(tài),等待客戶端的連接請求
connect
用于客戶端向遠程發(fā)送一個連接請求,語法:Winsock.connect [IP,Port]
Accept
用于服務器接收一個遠程客戶端的連接請求,語法:Winsock.Accept requestID
sendData
用于向遠程發(fā)送數(shù)據(jù),語法:Winsock.sendData 數(shù)據(jù)
getData
用于接收遠程發(fā)送來的數(shù)據(jù),語法:Winsock.getData 變量
Close
關(guān)閉通信

Winsock的主要事件:

事件名
說明
Connect
當服務器接收客戶端請求時,服務端發(fā)生的事件
DataArrival
有數(shù)據(jù)到達時發(fā)生的事件,可以在這個事件中來getData發(fā)送來的數(shù)據(jù)
ConnectionRequest
客戶端用Connect方法時服務器發(fā)生的事件,可以在這個事件中來Accept一個連接請求
SendProgress
發(fā)送數(shù)據(jù)中發(fā)生的事件,可以在這個事件中來標示當前已經(jīng)發(fā)送多少數(shù)據(jù)
SendComplete
發(fā)送數(shù)據(jù)完成發(fā)生的事件
Error
通信發(fā)生錯誤時發(fā)生的事件
Close
關(guān)閉通信時發(fā)生的事件

這節(jié)我們詳細介紹了Winsock控件的屬性、方法和事件等,只要擁有這些,我們就可以編很多功能強大的軟件了。在接下來的幾課中我們將以實例來說明Winsock的應用。

第二節(jié):Winsock聊天器實例

上一節(jié)我們介紹了Winsock控件,這節(jié)我們將以一個聊天器的實例來說說如何應運Winsock控件進行計算機之間的通信。

我也做了一個聊天器,程序點擊這里下載。

這節(jié)課我們做了用于通信的服務端和客戶端,在制作他們之前,先看看服務端和客戶端是如何設計的:(注:要復制本頁代碼時要注意去掉不正確的字符如?號

服務端的設計:

1、設置好localPort作為偵聽端口

2、使用listen使服務端處在偵聽狀態(tài)

3、客戶端發(fā)出連接請求后觸發(fā)ConnectionRequest事件

4、在ConnectionRequest中用Accept方法來接收客戶端的連接請求

5、收發(fā)數(shù)據(jù)

客戶端的設計:

1、設置RemoteHost,即你要連接IP

2、設置好RemotePort,即通信的端口號,要與服務端的一致

3、使用Connect方法向服務端發(fā)出連接請求

4、如果服務端同意連接請求則觸發(fā)Connect事件

5、收發(fā)數(shù)據(jù)

服務端的制作:

界面如下:

服務器設計第一、二步的實現(xiàn)(窗體的Load事件):

Private Sub Form_Load()
        wskServer.LocalPort = 1024    ' 1、設置好localPort作為偵聽端口
        wskServer.Listen      ' 2、使用listen使服務端處在偵聽狀態(tài)
End Sub

服務器設計第三、四步的實現(xiàn)(Winsock的Connect):

Private Sub wskServer_ConnectionRequest(ByVal requestID As Long)
        If wskServer.State <> sckClosed Then
                wskServer.Close     '這里要先關(guān)閉,要不會報錯
                wskServer.Accept requestID      ' 4、在ConnectionRequest中用Accept方法來接收客戶端的連接請求
        End If
End Sub

服務器設計第五步的實現(xiàn):

Private Sub cmdSend_Click()
         wskServer.SendData txtMessage.Text     '發(fā)送數(shù)據(jù)
        txtContent.Text = vbCrLf & txtContent.Text & "我說:" & txtMessage.Text        '加到聊天記錄中
        txtContent.Text=""
End Sub

Private Sub wskServer_DataArrival(ByVal bytesTotal As Long)
         Dim tempS As String
         wskServer.GetData tempS    '接收數(shù)據(jù)
         txtContent.Text = txtContent.Text & "對方說:" & tempS & vbCrLf        '加到聊天記錄中
End Sub

將上面的程序生成一個EXE文件(名為:Server.exe),然后新建一個工程以制作客戶端。

客戶端的制作:

界面如下:

客戶端設計第一、二、三步的實現(xiàn):

Private Sub cmdConnect_Click()
         Dim IP As String
         IP = InputBox("請輸入要連接的IP", "輸入的IP", "127.0.0.1")       '連接的IP默認為本機
         wskClient.RemoteHost = IP      '1、設置RemoteHost,即你要連接IP
         wskClient.RemotePort = 1024        '2、設置好RemotePort,即通信的端口號,要與服務端的一致
         wskClient.Connect      '3、使用Connect方法向服務端發(fā)出連接請求
         cmdConnect.Enabled = False
End Sub

客戶端設計第五步的實現(xiàn)(發(fā)送和接收代碼和服務器一致,只不過控件名不同而已):

Private Sub cmdSend_Click()
         wskClient.SendData txtMessage.Text     '發(fā)送數(shù)據(jù)
        txtContent.Text = vbCrLf & txtContent.Text & "我說:" & txtMessage.Text        '加到聊天記錄中
        txtContent.Text=""
End Sub

Private Sub wskClient_DataArrival(ByVal bytesTotal As Long)
         Dim tempS As String
         wskClient.GetData tempS    '接收數(shù)據(jù)
         txtContent.Text = txtContent.Text & "對方說:" & tempS & vbCrLf        '加到聊天記錄中
End Sub

生成EXE文件(名為:Client.exe)。這樣一個聊天器就做好了,在本機也可以試試,運行方法是先打開Server.exe,后打開Client.exe,然后在Client.exe點擊連接按鈕,連接地址為"127.0.0.1",確定,然后在下面的文本框輸入內(nèi)容點發(fā)送按鈕即可。在建立連接后Server.exe的操作方法和Client.exe的操作方法一樣。試試吧!

最后說一句:實際上我們會發(fā)現(xiàn)這樣的聊天器怎么會分為兩個部份呢,這樣多不方便。實際上我們可以合成一個,即在一個窗體上放一個wskServer再放一個wskClient,這樣就OK了,這里是為了更好的說明就放分成兩個的。還有就是這個聊天器是基于TCP協(xié)議,這個協(xié)議保證了通信的數(shù)據(jù)不會丟失,這個協(xié)議只能一對一,但在實際中我們聊天的對象不會是一個人吧,這樣就要用到可以一對多但不保證數(shù)據(jù)能完全到達UDP協(xié)議了,簡單而言TCP用于一對一,而UDP可以運用于一對多。下一節(jié)我們將介紹用Winsock制作一個簡單的Web服務器。

第三節(jié):Winsock制作Web服務器

在本節(jié)中,我們將制作一個簡單的Web服務器(點擊這里下載源文件)。

按上節(jié)的說法,我們可以把Web服務器看是一個服務端,而瀏覽器則是一個一個的客戶端,他們以一個相同的端口(如HTTP默認為80,F(xiàn)TP默認為21),所以就能通信。他們的工作流程大概如下:首先Web服務器在某一端口上等待瀏覽器的連接,然后瀏覽器向目標Web服務器發(fā)出要求瀏覽某一網(wǎng)頁的請求,最后Web服務根據(jù)請求發(fā)送相應的網(wǎng)頁源文件給瀏覽器。

用過ASP的都知道,我們有一個Web服務器叫IIS,這個服務器就是根據(jù)瀏覽器的請求而產(chǎn)生相應的源碼然后發(fā)送到用戶的瀏覽器上的。

別的不多說,界面很簡單:

將文本框設置可以顯示多行文本。為了有別于其他,我們這個Web服務器將使用端口124。制作流程如下:

在Form_Load事件中將服務器的偵聽端口設為124:

Private Sub Form_Load()
        wskServer.LocalPort = 124
        wskServer.Listen
End Sub

在wskServer的ConnectionRequest事件中接受客戶端(瀏覽器)的連接:

Private Sub wskServer_ConnectionRequest(ByVal requestID As Long)
        If wskServer.State <> sckClosed Then
                wskServer.Close
        End If
        wskServer.Accept requestID
End Sub

在wskServer控件的DataArrival事件中加當瀏覽器的請求文本來時發(fā)送源代碼過去:

Private Sub wskServer_DataArrival(ByVal bytesTotal As Long)
        'Dim tempS As String
        'wskServer.GetData tempS
        'txtMain.Text = tempS
        txtMain.Text = txtMain.Text & "一個IP為[" & wskServer.RemoteHostIP & "]連接對象" & vbCrLf
        sendCode ("index.htm")
End Sub

這里在窗體模塊(窗體聲明)中加入一個發(fā)送源代碼的sendCode的Sub過程:

Sub sendCode(fileName As String)
        Open App.Path & "\" & fileName For Input As #1
        Dim tempS As String
        Do While Not EOF(1)
                Line Input #1, tempS
                wskServer.SendData tempS
        Loop
        Close #1
End Sub

在cmdClose的Click事件中關(guān)閉窗體和服務:

Private Sub cmdClose_Click()
        wskServer.Close
        Unload Me
        End
End Sub

最后要在wskServer的SendComplete事件中加入如下代碼:

Private Sub wskServer_SendComplete()
wskServer.Close
End Sub

這里制作好了,將工程文件保存在[C:\temp]文件夾中,然后自己做一個網(wǎng)頁名為index.htm也放在[C:\temp]中。這時按F5運行,然后打開IE,輸入:http://127.0.0.1:124,這下等網(wǎng)頁的顯示吧。

這只是一個簡單的Web服務器,只能給你們說明一些原理,下面說幾個問題:

1、我們?nèi)绾沃揽蛻舳艘氖悄膫€文件:

實際上我們給Web服務器發(fā)送連接會有一個文本請求來說明自己要的是什么文件,比如你把上面的wskServer的DataArrival事件中的前三行取消注釋,再次按上面的方法來運行一次,不過這次把請求網(wǎng)址改為:"http://127.0.0.1/1.htm",那么文本框中會顯示瀏覽器的請求文本為(以我的瀏覽器為例):

GET /1.htm HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: 127.0.0.1:124
Connection: Keep-Alive

你看第一行就知道客戶端要的是什么文件了。

2、為什么在wskServer的SendComplete事件中要關(guān)閉服務器:

回答這個問題你可以將wskServer.Close注釋起來再次運行,你會發(fā)現(xiàn)要很久(或要刷新網(wǎng)頁)才會有頁面出現(xiàn),這是因為如果服務一直在的話,那么瀏覽器以為服務的數(shù)據(jù)沒有傳完,就一直等待,所以要在傳送完源代碼時關(guān)閉服務器。

3、能不能用Winsock做自己的瀏覽器:

能。我們可以用Winsock下載網(wǎng)頁的源代碼,但在VB中我們有另一個功能更強大的控件來做我們的瀏覽器,將在下節(jié)中說明具體的做法。

第四節(jié):Winsock制作多客戶服務器

我們前面的程序都只說到使用Winsock制作一對一的連接,實際上我們使用控件數(shù)組的話,那么可以制作一個多客戶連接的服務器。不過本質(zhì)上還是一對一,不過是服務器上不只一個Windsock而已。

我們在窗體上放一個Winsock,將他的Name改為sckServer,index屬性改為0。然后就是代碼了:

clientCount As Integer        '定義一個窗體級變量來記錄客戶的連接數(shù)。

Private Sub Form_Load()
clientCount = 0
sckServer(0).LocalPort = 2000       '設置好偵聽端口
sckServer(0).Listen      '開始偵聽
End Sub   

Private Sub sckServer_ConnectionRequest (Index As Integer, ByVal requestID As Long)
If Index = 0 Then
clientCount = clientCount + 1       '客戶請求多一個
Load sckServer(clientCount)         '載入一個服務端為新增的客戶服務
sckServer(clientCount).LocalPort = 0    '偵聽端口為隨機,不能設為2000,因為有sckServer(0)在使用了。
sckServer(clientCount).Accept requestID        '接受請求
End If
End Sub

看了代碼明白了吧,所謂多客戶服務器就是多個Winsock服務端在為客戶服務而已,當然我們不用同步的時候也可以用一個Winsock來連續(xù)的關(guān)閉、連接來做多客戶服務器也是可以的。

第五節(jié):Web瀏覽器控件

在VB6.0中Web瀏覽器控件是WebBrowser,他的作用是讓我們只要加入少量的代碼,就能做出和IE功能一樣強大的瀏覽器。(

WebBrowser的功能強大是由眾多方法、屬性和行為組成的,下面說下它的主要屬性、方法和行為。

WebBrowser的主要屬性:

屬性名
說明
LocationURL
返回當WebBrower中網(wǎng)頁的URL
LocationName
返回當WebBrower中網(wǎng)頁的標題,即HTML中的Title標記

WebBrowser的主要方法:

方法名
作用
Navigate
瀏覽網(wǎng)頁。如:WebBrower.Navigate "http://junqing124.update.vip2.com"
GoBack
后退
GoForward
前進
GoHome
瀏覽主頁
GoSearch
打開搜索頁面
Refresh
刷新
Stop
停止

WebBrowser的主要事件:

事件名
說明
DownloadBegin
頁面開始下載
DownloadComplete
頁面下載完畢
TitleChange
瀏覽器的Title改變,即瀏覽新的頁面

這里簡單說了下WebBrower控件的部份屬性、方法和行為。

下面是一個示例:

上面的四個按鈕的名字分別為Command1、Command2、Command3、Command4,下面的文本框為Text1,最下面的是一個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運行,在文本輸入網(wǎng)址后回車看看效果吧!

打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【重要】winsock 如何允許更多客戶端同時連接
VB關(guān)于webbrowser相關(guān)操作大全
利用Winsock控件實現(xiàn)FTP編程
用VB實現(xiàn)客戶——服務器(TCP/IP)編程實例 — 編程愛好者 programfan.c...
VB6 通過winsock控件數(shù)組實現(xiàn)客戶端和服務器多對一通信
VBA -網(wǎng)頁控制方式簡介
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服