亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于WinSock的網(wǎng)絡(luò)編程技術(shù)

        2009-10-11 07:28:24邱育橋
        電腦知識(shí)與技術(shù) 2009年14期

        邱育橋

        摘要:介紹了VB中Winsock控件的屬性、方法、事件,并示例性地說明在VB中用 Winsock控件實(shí)現(xiàn)網(wǎng)絡(luò)通信的一種簡(jiǎn)易方法。

        關(guān)鍵詞:網(wǎng)絡(luò)編程;Winsock控件;TCP協(xié)議;UDP協(xié)議

        中圖分類號(hào):TP311.1 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2009)14-3695-02

        Based on Winsock Control ofNetwork Programming Technology

        QIU Yu-qiao

        (Department of chemistry, Qiongzhou University, Wuzhishan 572200, China)

        Abstract: The attribute, method and event of Winsock control in VB has been introduced. And a simplemethod of the use of Winsock control to realize network communication ispresented.

        Key words: Winsock control; TCP; UDP; network communication

        近幾年來,計(jì)算機(jī)網(wǎng)絡(luò)的應(yīng)用越來越廣泛,網(wǎng)絡(luò)應(yīng)用軟件的開發(fā)需求與日俱增。在網(wǎng)絡(luò)編程時(shí),常常會(huì)遇到客戶端之間或者客戶端和服務(wù)器之間的信息互傳問題。 常用的解決方法是利用 Socket套接字?jǐn)?shù)據(jù)通信來進(jìn)行點(diǎn)對(duì)點(diǎn)的文件傳輸。Windows Socket作為一個(gè)開放的、支持多種協(xié)議的 Windows下的網(wǎng)絡(luò)編程接口已經(jīng)得到了普遍的應(yīng)用。 采用這種方法較為簡(jiǎn)便,卻能做到在互通的網(wǎng)絡(luò)中任何兩臺(tái)計(jì)算機(jī)之間的文件共享和傳輸。

        1 Winsock控件介紹

        Winsock是在1991年由JSB公司Marting Hall所提出的。Windows Sockets是指在MS Windows下發(fā)展網(wǎng)絡(luò)程序的應(yīng)用程序接口(API),并通過傳輸控制協(xié)議TCP和數(shù)據(jù)文報(bào)協(xié)議UDP進(jìn)行數(shù)據(jù)交換。 TCP協(xié)議是基于連接的協(xié)議,可以將它同電話系統(tǒng)相比,在開始數(shù)據(jù)傳輸之前,用戶必須先建立連接;UDP協(xié)議則是一個(gè)無連接、不可靠的協(xié)議,跟TCP操作不同,計(jì)算機(jī)并不建立連接。 如果你所傳輸?shù)臄?shù)據(jù)可靠性是要求較高的,請(qǐng)選用TCP協(xié)議進(jìn)行通信,否則可以選用UDP協(xié)議進(jìn)行通信。 選用TCP進(jìn)行通信需要更多的系統(tǒng)資源。 本文著重對(duì)其TCP協(xié)議的應(yīng)用進(jìn)行討論。

        2 Winsock控件的常用屬性、方法和事件

        1) Winsock控件的屬性:

        LocalHostName/RemoteHost:本地/遠(yuǎn)程 主機(jī)名;

        LocalPort/RemotePort:本地/遠(yuǎn)程 機(jī)使用的端口號(hào);

        Protocol:設(shè)置通信所使用的協(xié)議( TCP或UDP);

        State:控件當(dāng)前的狀態(tài)

        2) Winsock 控件的方法:

        Connect/Accept/Listen:發(fā)送/接收/監(jiān)聽一個(gè)連接請(qǐng)求;

        GetData/SendData:獲取/發(fā)送數(shù)據(jù);

        Close:關(guān)閉一個(gè)TCP連接;

        3) Winsock控件的事件:

        Close:遠(yuǎn)程主機(jī)已關(guān)閉觸發(fā)此事件;

        ConnectRequest:連接請(qǐng)求到達(dá)觸發(fā)此事件;

        DataArrival:數(shù)據(jù)到達(dá)觸發(fā)此事件;

        3 Winsock控件的工作原理及過程

        使用TCP協(xié)議創(chuàng)建客戶應(yīng)用程序,確定服務(wù)器計(jì)算機(jī)名或者 IP地址(RemoteHost屬性)及其監(jiān)聽的端口(RemotePort屬性),然后調(diào)用 Connect方法發(fā)送連接請(qǐng)求;服務(wù)器端應(yīng)用程序,則設(shè)置一個(gè)監(jiān)聽端口(LocalPort屬性),并調(diào)用 Listen方法監(jiān)聽連接請(qǐng)求,當(dāng)客戶計(jì)算機(jī)需要連接時(shí)就會(huì)發(fā)生 ConnectionRequest事件,為完成連接,可在ConnectionRequest事件中調(diào)用 Accept方法。 建立連接后,任何一方計(jì)算機(jī)都可以收發(fā)數(shù)據(jù)??烧{(diào)用 SendData方法發(fā)送數(shù)據(jù);當(dāng)接收數(shù)據(jù)時(shí)會(huì)發(fā)生 DataArrival事件,在DataArrival事件中調(diào)用 GetData方法就可獲取數(shù)據(jù)。一個(gè) TCP連接需要客戶機(jī)和服務(wù)器都要有一個(gè) IP地址和端口,所標(biāo)識(shí)的端口一定不能再讓其它應(yīng)用程序使用。

        UDP協(xié)議創(chuàng)建連接,首先要設(shè)置客戶計(jì)算機(jī)的 LocalPort屬性,然后服務(wù)器計(jì)算機(jī)需將 RemoteHost設(shè)置為客戶計(jì)算機(jī)的 Internet地址,將 RemotePort屬性設(shè)置為跟客戶計(jì)算機(jī)的 LocalPort屬性相同的端口,并調(diào)用 SendData方法來發(fā)送信息,GetData方法來獲取已發(fā)送的信息。由于UDP協(xié)議沒有建立連接,通信效率高,但可靠性不如 TCP協(xié)議,使用 UDP發(fā)送消息,有時(shí)會(huì)出現(xiàn)收不到消息的情況。

        4 Winsock控件的實(shí)例編程

        下面實(shí)例介紹WinSock控件采用TCP協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)通信的一種簡(jiǎn)單編程方法。

        4.1 服務(wù)器端應(yīng)用程序

        1) 新建“標(biāo)準(zhǔn) EXE”工程。

        2) 在窗體上放入一個(gè) winsock控件,并將它的名字改為:tcpServer。

        3) 在窗體上放兩個(gè) TextBox控件。

        4) 代碼及注釋如下:

        Private Sub Form_Load()

        tcpServer.LocalPort = 2001 '端口

        tcpServer.Listen'監(jiān)聽

        End Sub

        Private Sub tcpServer_ConnectionRequest (ByVal requestID As Long)

        If tcpServer.State <> sckClosed Then tcpServer.Close

        ' 使收到對(duì)方連接請(qǐng)求之前保持關(guān)閉狀態(tài)

        tcpServer.Accept requestID '建立連接

        End Sub

        Private Sub tcpServer_DataArrival (ByVal bytesTotal As Long)

        Dim strDataAs String

        tcpServer.GetData strData '接收信息

        txtOutput.Text = strData

        End Sub

        Private SubtxtSendData_Change()

        tcpServer.Send DatatxtSendData.Text '發(fā)送信息

        EndSub

        4.2 TCP客戶端的建立

        1) 在工程中添加一個(gè)新的窗體,在窗體上添加一個(gè)Winsock控件其命名為tcpClient。

        2) 在窗體上添加2個(gè)TextBox控件和2個(gè)CommandButton控件。

        3) 代碼及注釋如下:

        Private Subcmdconnect_Click()'建立連接命令按鈕

        tcpClient.Connect

        End Sub

        PrivateSubcmdSent_Click()'發(fā)送信息命令按鈕

        tcpClient.SendData txtsend.Text

        EndSub

        Private Sub Form_Load()

        tcpClient.RemoteHost="qiuyuqiao"

        tcpClient.RemotePort=2001

        '設(shè)置遠(yuǎn)程主機(jī)名(或 IP地址)和端口號(hào)

        End Sub

        Private SubtcpClient_Close()

        MsgBox"服務(wù)器已關(guān)閉"

        EndSub

        PrivateSubtcpClient_Connect()

        MsgBox"連接成功"

        EndSub

        PrivateSubtcpClient_DataArriva(ByValbytesTotalAsLong)

        Dim str As String

        tcpClient.GetData str

        txtoutput.Text=str

        EndSub

        上面設(shè)計(jì)的基本服務(wù)器只能接收一個(gè)連接請(qǐng)求。一般來說,客戶端是不止一個(gè)的,如果每一個(gè)客戶端都使用一個(gè)端口連接時(shí),那么有上百個(gè)或更多的客戶時(shí)就需要許多個(gè)Wnsock控件與之相對(duì)應(yīng)。其實(shí)可以通過創(chuàng)建控件數(shù)組,使用一個(gè)控件也可以同時(shí)接收多個(gè)連接請(qǐng)求。利用這種方法,不需要關(guān)閉連接,而只需要?jiǎng)?chuàng)建新的控件實(shí)例(通過設(shè)置其索引屬性),然后在新的實(shí)例上調(diào)用 Accept方法。在這就不再做詳細(xì)的論述。

        5 結(jié)束語

        以上的實(shí)例是使用VB Winsock編程實(shí)現(xiàn)計(jì)算機(jī)網(wǎng)絡(luò)中點(diǎn)對(duì)點(diǎn)通信。Winsock技術(shù)的出現(xiàn)極好地屏蔽了網(wǎng)絡(luò)低層復(fù)雜的結(jié)構(gòu)和協(xié)議,這使得基于Winsock的網(wǎng)絡(luò)應(yīng)用程序可以在不同類型的網(wǎng)絡(luò)上運(yùn)行,同時(shí)使Winsock成為網(wǎng)絡(luò)編程的最流行技術(shù)。

        參考文獻(xiàn):

        [1] 王曉平, 鐘軍. VisualBasic網(wǎng)絡(luò)通信協(xié)議分析與應(yīng)用實(shí)現(xiàn)[M].北京:人民郵電出版社,2003.

        [2] 高俊光. 基于VB的Winsock控件的原理與應(yīng)用[J]. 應(yīng)用科技,2004;31(3):13-14.

        [3] 黃玲玲,楊剴,王穎. 在VB中使用Winsock控件實(shí)現(xiàn)局域網(wǎng)通信[J].信息技術(shù),2005(6):24-26.

        亚洲自拍另类欧美综合| 午夜爽爽爽男女免费观看影院 | 日韩高清毛片| 国产三级国产精品国产专区| 日韩女人毛片在线播放| 手机在线看片在线日韩av| 亚洲一区二区三区蜜桃| 精品少妇无码av无码专区| 人妻夜夜爽天天爽三区麻豆AV网站 | 2019日韩中文字幕mv| 国产裸体歌舞一区二区| 国产欧美久久久精品影院 | 久久黄色精品内射胖女人| 少妇被又大又粗又爽毛片久久黑人| 人人人妻人人澡人人爽欧美一区| 免费a级毛片无码a| 亚洲AV手机专区久久精品| 亚洲国产成a人v在线观看| 麻豆视频黄片在线免费观看| 久久精品国产亚洲av麻豆色欲| 国产精品久久婷婷六月丁香| 制服丝袜人妻中出第一页| 大屁股流白浆一区二区三区| 无码国产色欲xxxx视频| 国产综合激情在线亚洲第一页| 亚洲av高清资源在线观看三区| 我要看免费久久99片黄色| 日产精品久久久一区二区| 自拍偷自拍亚洲精品播放| 天堂女人av一区二区| 少妇人妻中文久久综合| 人妻少妇精品无码专区二区| 国产精品区一区第一页| 国产精品女丝袜白丝袜 | 久久精品人人做人人爽电影蜜月 | 性一交一乱一伦| 日韩精品视频在线一二三| 亚洲视频高清一区二区| 中文人妻无码一区二区三区在线 | 亚洲精品永久在线观看| 亚洲男人堂色偷偷一区|