本發(fā)明涉及無線通信技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)傳輸方法和設(shè)備。
背景技術(shù):現(xiàn)有技術(shù)中,每個物理端口(或者稱為物理網(wǎng)口、網(wǎng)絡(luò)端口,以下統(tǒng)稱為物理網(wǎng)口),都有對應(yīng)的網(wǎng)口驅(qū)動,所有物理網(wǎng)口的網(wǎng)口驅(qū)動掛接在vxWorks(一種實時操作系統(tǒng))網(wǎng)絡(luò)協(xié)議棧下,用戶通過vxWorks網(wǎng)絡(luò)協(xié)議??刂剖褂梦锢砭W(wǎng)口的設(shè)備。其中,現(xiàn)有基于網(wǎng)口驅(qū)動的管理示意圖如圖1所示。在這種情況下,用戶使用網(wǎng)絡(luò)協(xié)議棧時,需要關(guān)注底層物理網(wǎng)口的個數(shù),不利于用戶程序的移植,增加了復(fù)雜度;在實現(xiàn)多個端口數(shù)據(jù)分發(fā)和端口備份切換時,也需要考慮到物理網(wǎng)口的相關(guān)信息。例如,用戶在建立連接時,配置網(wǎng)口驅(qū)動1后,必須建立基于網(wǎng)口驅(qū)動1的網(wǎng)絡(luò)SOCKET(套接字)連接1;配置網(wǎng)口驅(qū)動2后,必須建立基于網(wǎng)口驅(qū)動2的網(wǎng)絡(luò)SOCKET連接2;類似的,每次用戶建立連接,實際上都是基于網(wǎng)口驅(qū)動來進行建立的,與物理網(wǎng)口的關(guān)系是固定的,在用戶建立連接之后,該連接在使用時,就只能使用該連接綁定的物理網(wǎng)口,而無法使用其他物理網(wǎng)口進行數(shù)據(jù)的傳輸。當(dāng)用戶想要利用多個物理網(wǎng)口進行數(shù)據(jù)傳輸時,必須基于已經(jīng)建立的SOCKET連接進行數(shù)據(jù)傳輸?shù)姆职l(fā)和備份選擇策略的處理,軟件實現(xiàn)復(fù)雜度高,而且與硬件的物理網(wǎng)口信息相關(guān),不利于軟件的移植。發(fā)明人在實現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下缺陷:在現(xiàn)有技術(shù)中,用戶在使用物理網(wǎng)口時,需要關(guān)注底層物理網(wǎng)口個數(shù),初始化時需要給每個物理網(wǎng)口配置IP信息,掛接協(xié)議棧,在建立用戶的SOCKET連接后,如果需要實現(xiàn)物理網(wǎng)口數(shù)據(jù)分發(fā)和備份功能時,軟件必須要基于SOCKET連接進行一些設(shè)計,以便進行數(shù)據(jù)分發(fā)和備份功能處理。軟件在實現(xiàn)基于多個IP或多個SOCKET連接進行備份或數(shù)據(jù)分發(fā)時,實現(xiàn)復(fù)雜度高,穩(wěn)定性差,對軟件系統(tǒng)約束較多,軟件實現(xiàn)時看到的是底層細節(jié)情況較多,不利于故障的發(fā)現(xiàn)和處理。同時,基于現(xiàn)有的軟件架構(gòu)的設(shè)計實現(xiàn),若物理網(wǎng)口的個數(shù)發(fā)生變化,則對應(yīng)的備份策略或數(shù)據(jù)分發(fā)策略也需要修改,如果在前期就考慮到這種情況,設(shè)計的復(fù)雜度會大大提升,不利于軟件架構(gòu)的設(shè)計和開發(fā)驗證,使得設(shè)計和開發(fā)周期變長。而且一旦硬件架構(gòu)發(fā)生變化,那么基于多個IP或多個SOCKET連接進行的數(shù)據(jù)分發(fā)和備份的架構(gòu)就需要重新進行移植處理才能重新使用,不利于軟件的移植。
技術(shù)實現(xiàn)要素:本發(fā)明的目的在于提供一種數(shù)據(jù)傳輸方法和設(shè)備,以提高數(shù)據(jù)傳輸?shù)撵`活性,以及軟件的可移植性,為此,本發(fā)明實施例采用如下技術(shù)方案:一種數(shù)據(jù)傳輸方法,應(yīng)用于包括網(wǎng)絡(luò)設(shè)備的系統(tǒng),所述網(wǎng)絡(luò)設(shè)備包括網(wǎng)口驅(qū)動、網(wǎng)絡(luò)協(xié)議棧、以及上層應(yīng)用程序,其中,所述網(wǎng)絡(luò)設(shè)備中還設(shè)置有虛擬網(wǎng)絡(luò)驅(qū)動,該方法包括:虛擬網(wǎng)絡(luò)驅(qū)動接收網(wǎng)口驅(qū)動轉(zhuǎn)發(fā)的數(shù)據(jù),所述數(shù)據(jù)為所述網(wǎng)口驅(qū)動接收到底層設(shè)備發(fā)送的數(shù)據(jù)后轉(zhuǎn)發(fā)給所述虛擬網(wǎng)絡(luò)驅(qū)動的;當(dāng)所述虛擬網(wǎng)絡(luò)驅(qū)動確定所述網(wǎng)口驅(qū)動是主用網(wǎng)口驅(qū)動時,所述虛擬網(wǎng)絡(luò)驅(qū)動將所述數(shù)據(jù)通過網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)給上層應(yīng)用程序。一種數(shù)據(jù)傳輸方法,應(yīng)用于包括網(wǎng)絡(luò)設(shè)備的系統(tǒng),所述網(wǎng)絡(luò)設(shè)備包括網(wǎng)口驅(qū)動、網(wǎng)絡(luò)協(xié)議棧、以及上層應(yīng)用程序,其中,所述網(wǎng)絡(luò)設(shè)備中還設(shè)置有虛擬網(wǎng)絡(luò)驅(qū)動,該方法包括:虛擬網(wǎng)絡(luò)驅(qū)動接收網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)的數(shù)據(jù),所述數(shù)據(jù)為所述網(wǎng)絡(luò)協(xié)議棧接收到上層應(yīng)用程序發(fā)送的數(shù)據(jù)后轉(zhuǎn)發(fā)給所述虛擬網(wǎng)絡(luò)驅(qū)動的;所述虛擬網(wǎng)絡(luò)驅(qū)動通過主用網(wǎng)口驅(qū)動將所述數(shù)據(jù)轉(zhuǎn)發(fā)給底層設(shè)備。一種網(wǎng)絡(luò)設(shè)備,包括網(wǎng)口驅(qū)動、網(wǎng)絡(luò)協(xié)議棧、以及上層應(yīng)用程序,其中,該網(wǎng)絡(luò)設(shè)備還包括虛擬網(wǎng)絡(luò)驅(qū)動;所述虛擬網(wǎng)絡(luò)驅(qū)動包括:接收模塊,用于接收網(wǎng)口驅(qū)動轉(zhuǎn)發(fā)的數(shù)據(jù),所述數(shù)據(jù)為所述網(wǎng)口驅(qū)動接收到底層設(shè)備發(fā)送的數(shù)據(jù)后轉(zhuǎn)發(fā)給所述虛擬網(wǎng)絡(luò)驅(qū)動的;確定模塊,用于確定所述網(wǎng)口驅(qū)動是否是主用網(wǎng)口驅(qū)動;發(fā)送模塊,用于當(dāng)所述確定模塊確定所述網(wǎng)口驅(qū)動是主用網(wǎng)口驅(qū)動時,將所述數(shù)據(jù)通過網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)給上層應(yīng)用程序。一種網(wǎng)絡(luò)設(shè)備,包括網(wǎng)口驅(qū)動、網(wǎng)絡(luò)協(xié)議棧、以及上層應(yīng)用程序,其中,該網(wǎng)絡(luò)設(shè)備還包括虛擬網(wǎng)絡(luò)驅(qū)動;所述虛擬網(wǎng)絡(luò)驅(qū)動包括:接收模塊,用于接收網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)的數(shù)據(jù),所述數(shù)據(jù)為所述網(wǎng)絡(luò)協(xié)議棧接收到上層應(yīng)用程序發(fā)送的數(shù)據(jù)后轉(zhuǎn)發(fā)給所述虛擬網(wǎng)絡(luò)驅(qū)動的;發(fā)送模塊,用于通過主用網(wǎng)口驅(qū)動將所述數(shù)據(jù)轉(zhuǎn)發(fā)給底層設(shè)備。本發(fā)明上述實施例中,網(wǎng)絡(luò)設(shè)備除了可以包括網(wǎng)口驅(qū)動、網(wǎng)絡(luò)協(xié)議棧以及上層應(yīng)用程序之外,還設(shè)置有虛擬網(wǎng)絡(luò)驅(qū)動;當(dāng)虛擬網(wǎng)絡(luò)驅(qū)動接收到底層設(shè)備通過網(wǎng)口驅(qū)動轉(zhuǎn)發(fā)的數(shù)據(jù),且確定該網(wǎng)口驅(qū)動為主用網(wǎng)口驅(qū)動時,該虛擬網(wǎng)絡(luò)驅(qū)動將該數(shù)據(jù)通過網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)給上層應(yīng)用程序;當(dāng)虛擬網(wǎng)絡(luò)驅(qū)動接收到上層應(yīng)用程序通過網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)的數(shù)據(jù)時,所述虛擬網(wǎng)絡(luò)驅(qū)動通過主用網(wǎng)口驅(qū)動將該數(shù)據(jù)轉(zhuǎn)發(fā)給底層設(shè)備,提高了數(shù)據(jù)傳輸?shù)撵`活性,以及軟件的可移植性。附圖說明圖1為現(xiàn)有技術(shù)中的基于網(wǎng)口驅(qū)動的管理示意圖;圖2為本發(fā)明實施例提供的基于虛擬網(wǎng)絡(luò)驅(qū)動的管理示意圖;圖3為本發(fā)明實施例提供的一種數(shù)據(jù)傳輸方法的流程示意圖;圖4為本發(fā)明實施例提供的一種數(shù)據(jù)傳輸方法的流程示意圖;圖5為本發(fā)明實施例提供的一種虛擬網(wǎng)絡(luò)驅(qū)動的結(jié)構(gòu)示意圖;圖6為本發(fā)明實施例提供的一種虛擬網(wǎng)絡(luò)驅(qū)動的結(jié)構(gòu)示意圖。具體實施方式針對上述現(xiàn)有技術(shù)的缺陷,本發(fā)明實施例提供一種數(shù)據(jù)傳輸?shù)募夹g(shù)方案,應(yīng)用于包括網(wǎng)絡(luò)設(shè)備的系統(tǒng)。在該技術(shù)方案中,該網(wǎng)絡(luò)設(shè)備除了可以包括網(wǎng)口驅(qū)動、vxWorks網(wǎng)絡(luò)協(xié)議棧(以下均簡稱為網(wǎng)絡(luò)協(xié)議棧)以及上層應(yīng)用程序之外,還設(shè)置有虛擬網(wǎng)絡(luò)驅(qū)動。其中:當(dāng)虛擬網(wǎng)絡(luò)驅(qū)動接收到底層設(shè)備通過網(wǎng)口驅(qū)動轉(zhuǎn)發(fā)的數(shù)據(jù),且確定該網(wǎng)口驅(qū)動為主用網(wǎng)口驅(qū)動時,該虛擬網(wǎng)絡(luò)驅(qū)動將該數(shù)據(jù)通過網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)給上層應(yīng)用程序;當(dāng)虛擬網(wǎng)絡(luò)驅(qū)動接收到上層應(yīng)用程序通過網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)的數(shù)據(jù)時,所述虛擬網(wǎng)絡(luò)驅(qū)動通過主用網(wǎng)口驅(qū)動將該數(shù)據(jù)轉(zhuǎn)發(fā)給底層設(shè)備。其中,基于虛擬網(wǎng)絡(luò)驅(qū)動的管理示意圖如圖2所示。通過本發(fā)明實施例提供的技術(shù)方案,通過設(shè)置虛擬網(wǎng)絡(luò)驅(qū)動,并在虛擬網(wǎng)絡(luò)驅(qū)動部分實現(xiàn)數(shù)據(jù)分發(fā),將物理網(wǎng)口虛擬成統(tǒng)一的虛擬網(wǎng)口,對于網(wǎng)絡(luò)協(xié)議棧只呈現(xiàn)一個虛擬網(wǎng)絡(luò)驅(qū)動,對上層應(yīng)用程序屏蔽物理網(wǎng)口信息,使上層應(yīng)用程序不用關(guān)注物理網(wǎng)口信息,提高了數(shù)據(jù)傳輸?shù)撵`活性,以及軟件的可移植性。下面將結(jié)合本申請中的附圖,對本申請中的技術(shù)方案進行清楚、完整的描述,顯然,所描述的實施例是本申請的一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。對于網(wǎng)絡(luò)設(shè)備接收底層設(shè)備發(fā)送的數(shù)據(jù)的處理流程示意圖參見圖3。如圖3所示,為本發(fā)明實施例提供的一種數(shù)據(jù)傳輸方法的流程示意圖,可以包括以下步驟:步驟301、虛擬網(wǎng)絡(luò)驅(qū)動接收網(wǎng)口驅(qū)動轉(zhuǎn)發(fā)的數(shù)據(jù),該數(shù)據(jù)為網(wǎng)口驅(qū)動接收到底層設(shè)備發(fā)送的數(shù)據(jù)后轉(zhuǎn)發(fā)給虛擬網(wǎng)絡(luò)驅(qū)動的。具體的,在本發(fā)明實施例中,網(wǎng)絡(luò)設(shè)備中設(shè)置有虛擬網(wǎng)絡(luò)驅(qū)動,該虛擬網(wǎng)絡(luò)驅(qū)動可以實現(xiàn)標(biāo)準(zhǔn)的vxWorksEND(EnhancedNetworkDriver,增強型網(wǎng)絡(luò)驅(qū)動)的基本功能,包括加載、卸載、啟動、停止、數(shù)據(jù)發(fā)送、數(shù)據(jù)接收、查詢發(fā)送、查詢接收等。此外,該虛擬網(wǎng)絡(luò)驅(qū)動中還可以配置有網(wǎng)口驅(qū)動管理池,以實現(xiàn)對網(wǎng)口驅(qū)動的管理。其中,網(wǎng)口驅(qū)動管理池中的網(wǎng)口驅(qū)動需要向虛擬網(wǎng)絡(luò)驅(qū)動進行注冊掛接。當(dāng)網(wǎng)口驅(qū)動接收到底層設(shè)備發(fā)送數(shù)據(jù)時,不再直接將該數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)協(xié)議棧,而是需要將接收到的數(shù)據(jù)轉(zhuǎn)發(fā)給虛擬網(wǎng)絡(luò)驅(qū)動,由虛擬網(wǎng)絡(luò)驅(qū)動對該數(shù)據(jù)進行轉(zhuǎn)發(fā)處理。為了實現(xiàn)網(wǎng)口驅(qū)動將接收到的數(shù)據(jù)轉(zhuǎn)發(fā)給虛擬網(wǎng)絡(luò)驅(qū)動,虛擬網(wǎng)絡(luò)驅(qū)動需要保存網(wǎng)口驅(qū)動的處理函數(shù)(第一處理函數(shù),網(wǎng)口驅(qū)動的END_OBJ結(jié)構(gòu)體的receiveRtn,用于網(wǎng)口驅(qū)動將數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)協(xié)議棧)的函數(shù)指針,并將該處理函數(shù)的函數(shù)指針替換為虛擬網(wǎng)絡(luò)驅(qū)動的處理函數(shù)(第二處理函數(shù),用于虛擬網(wǎng)絡(luò)驅(qū)動對數(shù)據(jù)進行處理并轉(zhuǎn)發(fā)給網(wǎng)絡(luò)協(xié)議棧)的函數(shù)指針,以使網(wǎng)口驅(qū)動接收到底層設(shè)備發(fā)送的數(shù)據(jù)后,先將數(shù)據(jù)轉(zhuǎn)發(fā)給虛擬網(wǎng)絡(luò)驅(qū)動,然后再由虛擬網(wǎng)絡(luò)驅(qū)動根據(jù)存儲的處理函數(shù)的函數(shù)指針,調(diào)用該處理函數(shù)將數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)協(xié)議棧。步驟302、虛擬網(wǎng)絡(luò)驅(qū)動確定該網(wǎng)口驅(qū)動是否是主用網(wǎng)口驅(qū)動;若判斷為是,則轉(zhuǎn)至步驟303;否則,轉(zhuǎn)至步驟304。具體的,在本發(fā)明實施例中,虛擬網(wǎng)絡(luò)驅(qū)動可以通過以下方式確定該網(wǎng)口驅(qū)動是否是主用網(wǎng)口驅(qū)動:虛擬網(wǎng)絡(luò)驅(qū)動判斷是否配置有網(wǎng)口驅(qū)動組;若判斷為是,則虛擬網(wǎng)絡(luò)驅(qū)動根據(jù)預(yù)先配置的網(wǎng)口驅(qū)動組分發(fā)策略確定該網(wǎng)口驅(qū)動是否是主用網(wǎng)口驅(qū)動組中的網(wǎng)口驅(qū)動(當(dāng)該網(wǎng)口驅(qū)動是主用網(wǎng)口驅(qū)動組中的網(wǎng)口驅(qū)動時,則可確定其為主用網(wǎng)口驅(qū)動,否則,確定其為非主用網(wǎng)口驅(qū)動);若判斷為否,則虛擬網(wǎng)絡(luò)驅(qū)動根據(jù)預(yù)先配置的網(wǎng)口驅(qū)動分發(fā)策略確定該網(wǎng)口驅(qū)動是否是主用網(wǎng)口驅(qū)動。當(dāng)虛擬網(wǎng)絡(luò)驅(qū)動確定該網(wǎng)口驅(qū)動是主用網(wǎng)口驅(qū)動時,該虛擬網(wǎng)絡(luò)驅(qū)動可以將該數(shù)據(jù)通過網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)給上層應(yīng)用程序;當(dāng)虛擬網(wǎng)絡(luò)驅(qū)動確定該網(wǎng)口驅(qū)動是非主用網(wǎng)口驅(qū)動時,該虛擬網(wǎng)絡(luò)驅(qū)動可以拒絕將該數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)協(xié)議棧。步驟303、虛擬網(wǎng)絡(luò)驅(qū)動將該數(shù)據(jù)通過網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)給上層應(yīng)用程序。具體的,當(dāng)虛擬網(wǎng)絡(luò)驅(qū)動確定該網(wǎng)口驅(qū)動是主用網(wǎng)口驅(qū)動后,可以根據(jù)上述保存的處理函數(shù)的函數(shù)指針,調(diào)用該處理函數(shù)將數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)協(xié)議棧,由網(wǎng)絡(luò)協(xié)議棧將該數(shù)據(jù)轉(zhuǎn)發(fā)給上層應(yīng)用程序。步驟304、虛擬網(wǎng)絡(luò)驅(qū)動拒絕將該數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)協(xié)議棧。進一步地,在本發(fā)明實施例提供的技術(shù)方案中,虛擬網(wǎng)絡(luò)驅(qū)動中還可以預(yù)先配置數(shù)據(jù)過濾策略,以對接收到的網(wǎng)口驅(qū)動轉(zhuǎn)發(fā)的數(shù)據(jù)進行過濾。當(dāng)虛擬網(wǎng)絡(luò)驅(qū)動接收到主用網(wǎng)口驅(qū)動轉(zhuǎn)發(fā)的數(shù)據(jù)后,可以根據(jù)預(yù)先配置的數(shù)據(jù)過濾策略確定是否需要將該數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)協(xié)議棧,當(dāng)確定為需要時,虛擬網(wǎng)絡(luò)驅(qū)動將該數(shù)據(jù)通過網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)給上層應(yīng)用程序;當(dāng)確定為不需要時,虛擬網(wǎng)絡(luò)驅(qū)動拒絕將該數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)協(xié)議棧。例如,可以提供數(shù)據(jù)過濾的注冊函數(shù),供用戶自主針對數(shù)據(jù)進行過濾處理時調(diào)用。過濾鉤子原型函數(shù)定義可以為:typedefint(*Virtual_port_rx_filter)(void*pvBuf,intdataLength);其中,void*pvBuf為指向接收的數(shù)據(jù)緩沖區(qū)的指針;intdataLength為指向接收的數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)長度;返回值為int類型,可以包括數(shù)據(jù)處理完成,數(shù)據(jù)被截獲;針對返回值為數(shù)據(jù)處理完成,虛擬網(wǎng)絡(luò)驅(qū)動將數(shù)據(jù)通過網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)給上層應(yīng)用程序;針對返回值為數(shù)據(jù)被截獲,虛擬網(wǎng)絡(luò)驅(qū)動不再將數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)協(xié)議棧;其中,虛擬網(wǎng)絡(luò)驅(qū)動可以在對應(yīng)的過濾管理信息中,增加數(shù)據(jù)被截獲次數(shù)。相應(yīng)地,虛擬網(wǎng)絡(luò)驅(qū)動根據(jù)預(yù)先配置的數(shù)據(jù)過濾策略對所述數(shù)據(jù)進行過濾可以具體實現(xiàn)為:當(dāng)數(shù)據(jù)為數(shù)據(jù)處理完成狀態(tài)時,虛擬網(wǎng)絡(luò)驅(qū)動確定需要將數(shù)據(jù)發(fā)送給網(wǎng)絡(luò)協(xié)議棧;當(dāng)數(shù)據(jù)為數(shù)據(jù)被截獲狀態(tài)時,虛擬網(wǎng)絡(luò)驅(qū)動確定不需要將數(shù)據(jù)發(fā)送給網(wǎng)絡(luò)協(xié)議棧。需要注意的是,上述根據(jù)虛擬網(wǎng)絡(luò)驅(qū)動根據(jù)數(shù)據(jù)為處理完成類型或數(shù)據(jù)被截獲類型對數(shù)據(jù)進行過濾僅是本發(fā)明實施例提供的數(shù)據(jù)過濾的一種實現(xiàn)方式,虛擬網(wǎng)絡(luò)驅(qū)動也可以通過其他方式實現(xiàn)數(shù)據(jù)過濾(如根據(jù)數(shù)據(jù)長度、數(shù)據(jù)內(nèi)容等),其具體實現(xiàn)在此不再贅述。對于網(wǎng)絡(luò)設(shè)備向底層設(shè)備發(fā)送數(shù)據(jù)的處理流程參見圖4。如圖4所示,為本發(fā)明實施例提供的一種數(shù)據(jù)傳輸方法的流程示意圖,可以包括以下步驟:步驟401、虛擬網(wǎng)絡(luò)驅(qū)動接收網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)的數(shù)據(jù),該數(shù)據(jù)為網(wǎng)絡(luò)協(xié)議棧接收到上層應(yīng)用程序發(fā)送的數(shù)據(jù)后轉(zhuǎn)發(fā)給該虛擬網(wǎng)絡(luò)驅(qū)動的。具體的,在本發(fā)明實施例中,當(dāng)網(wǎng)絡(luò)協(xié)議棧接收到上層應(yīng)用程序發(fā)送的數(shù)據(jù)時,不再直接通過網(wǎng)口驅(qū)動對數(shù)據(jù)進行轉(zhuǎn)發(fā),而是需要將接收到的數(shù)據(jù)轉(zhuǎn)發(fā)給虛擬網(wǎng)絡(luò)驅(qū)動,由虛擬網(wǎng)絡(luò)驅(qū)動對該數(shù)據(jù)進行轉(zhuǎn)發(fā)處理。步驟402、虛擬網(wǎng)絡(luò)驅(qū)動查找主用網(wǎng)口驅(qū)動。若查找成功,則轉(zhuǎn)至步驟403;若查找失敗,則轉(zhuǎn)至步驟404。具體的,當(dāng)虛擬網(wǎng)絡(luò)驅(qū)動接收到網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)的數(shù)據(jù)時,需要將該數(shù)據(jù)通過主用網(wǎng)口驅(qū)動轉(zhuǎn)發(fā)給底層設(shè)備。虛擬網(wǎng)絡(luò)驅(qū)動先確定是否配置了網(wǎng)口驅(qū)動組,若配置了網(wǎng)口驅(qū)動組,虛擬網(wǎng)絡(luò)驅(qū)動可以根據(jù)預(yù)先配置的網(wǎng)口驅(qū)動組分發(fā)策略查找主用網(wǎng)口驅(qū)動組,并通過該主用網(wǎng)口驅(qū)動組中的網(wǎng)口驅(qū)動將該數(shù)據(jù)轉(zhuǎn)發(fā)給底層設(shè)備;若為未配置網(wǎng)口驅(qū)動組,則虛擬網(wǎng)絡(luò)驅(qū)動可以根據(jù)預(yù)先配置的網(wǎng)口驅(qū)動分發(fā)策略查找主用網(wǎng)口驅(qū)動,并通過該主用網(wǎng)口驅(qū)動將該數(shù)據(jù)轉(zhuǎn)發(fā)給底層設(shè)備。其中,若虛擬網(wǎng)絡(luò)驅(qū)動查找主用網(wǎng)口驅(qū)動失敗,則虛擬網(wǎng)絡(luò)驅(qū)動禁止數(shù)據(jù)轉(zhuǎn)發(fā)。步驟403、虛擬網(wǎng)絡(luò)驅(qū)動通過主用網(wǎng)口驅(qū)動將數(shù)據(jù)轉(zhuǎn)發(fā)給底層設(shè)備。具體的,若虛擬網(wǎng)絡(luò)驅(qū)動確定配置有網(wǎng)口驅(qū)動組,且查找到主用網(wǎng)口驅(qū)動組,則虛擬網(wǎng)絡(luò)驅(qū)動可以通過該主用網(wǎng)口驅(qū)動組中的網(wǎng)口驅(qū)動將數(shù)據(jù)轉(zhuǎn)發(fā)給底層設(shè)備;若虛擬網(wǎng)絡(luò)驅(qū)動確定未配置網(wǎng)口驅(qū)動組,且查找到主用網(wǎng)口驅(qū)動,則虛擬網(wǎng)絡(luò)驅(qū)動可以通過該主用驅(qū)動將數(shù)據(jù)轉(zhuǎn)發(fā)給底層設(shè)備。其中,虛擬網(wǎng)絡(luò)驅(qū)動從主用網(wǎng)口驅(qū)動組中選擇網(wǎng)口驅(qū)動對數(shù)據(jù)轉(zhuǎn)發(fā)的具體實現(xiàn)在此不再贅述。步驟404、虛擬網(wǎng)絡(luò)驅(qū)動拒絕將該數(shù)據(jù)轉(zhuǎn)發(fā)給底層設(shè)備。在本發(fā)明實施例中,實現(xiàn)了對多個網(wǎng)口驅(qū)動的管理模式配置,如負荷分擔(dān)、網(wǎng)口驅(qū)動主備、網(wǎng)口驅(qū)動備份等,具體支持的配置模式如表1所示:表1、網(wǎng)口驅(qū)動管理配置模式基于上述網(wǎng)口驅(qū)動管理配置模式,本發(fā)明實施例提供的數(shù)據(jù)分發(fā)控制策略至少可以包括:1)、網(wǎng)口驅(qū)動注冊后默認狀態(tài)為主用網(wǎng)口驅(qū)動;2)、網(wǎng)口驅(qū)動為主用網(wǎng)口驅(qū)動時,允許分發(fā)數(shù)據(jù);3)、網(wǎng)口驅(qū)動為備用網(wǎng)口驅(qū)動時,禁止分發(fā)數(shù)據(jù);4)、若配置了網(wǎng)口驅(qū)動組,則根據(jù)網(wǎng)口驅(qū)動組分發(fā)策略選擇網(wǎng)口驅(qū)動后進行數(shù)據(jù)分發(fā);5)、若配置了網(wǎng)口驅(qū)動聚合,則運行動態(tài)聚合協(xié)議,根據(jù)聚合組策略分發(fā)數(shù)據(jù);6)、網(wǎng)口驅(qū)動進行數(shù)據(jù)接收時,需要檢查是否需要進行數(shù)據(jù)過濾;若需要,則根據(jù)數(shù)據(jù)過濾策略進行數(shù)據(jù)分發(fā);7)、若配置了網(wǎng)口驅(qū)動主備策略,且主用網(wǎng)口驅(qū)動故障時,修改網(wǎng)口驅(qū)動主備標(biāo)識為備用狀態(tài),查找備用網(wǎng)口驅(qū)動,將其主備標(biāo)識設(shè)置為主用狀態(tài);8)、如配置了網(wǎng)口驅(qū)動組主備策略,且主用端口組故障時,則修改網(wǎng)口驅(qū)動組內(nèi)網(wǎng)口驅(qū)動的主備標(biāo)識為備用狀態(tài),查找備用網(wǎng)口驅(qū)動組,將備用網(wǎng)口驅(qū)動組內(nèi)網(wǎng)口驅(qū)動的主備標(biāo)識設(shè)置為主用狀態(tài);9)、網(wǎng)口驅(qū)動故障時,該網(wǎng)口驅(qū)動進行備用狀態(tài)。通過以上描述可以看出,在本發(fā)明實施例中,當(dāng)虛擬網(wǎng)絡(luò)驅(qū)動接收到底層設(shè)備通過網(wǎng)口驅(qū)動轉(zhuǎn)發(fā)的數(shù)據(jù),且確定該網(wǎng)口驅(qū)動為主用網(wǎng)口驅(qū)動時,該虛擬網(wǎng)絡(luò)驅(qū)動將該數(shù)據(jù)通過網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)給上層應(yīng)用程序;當(dāng)虛擬網(wǎng)絡(luò)驅(qū)動接收到上層應(yīng)用程序通過網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)的數(shù)據(jù)時,所述虛擬網(wǎng)絡(luò)驅(qū)動通過主用網(wǎng)口驅(qū)動將該數(shù)據(jù)轉(zhuǎn)發(fā)給底層設(shè)備,對于網(wǎng)絡(luò)協(xié)議棧只呈現(xiàn)一個虛擬網(wǎng)絡(luò)驅(qū)動,對上層應(yīng)用程序屏蔽物理網(wǎng)口信息,使上層應(yīng)用程序不用關(guān)注物理網(wǎng)口信息,提高了數(shù)據(jù)傳輸?shù)撵`活性,以及軟件的可移植性。基于上述方法流程相同的技術(shù)構(gòu)思,本發(fā)明實施例還提供了一種網(wǎng)絡(luò)設(shè)備,可以應(yīng)用于上述方法實施例。在本發(fā)明實施例中,網(wǎng)絡(luò)設(shè)備除了包括網(wǎng)口驅(qū)動、網(wǎng)絡(luò)協(xié)議棧、以及上層應(yīng)用程序之外,還包括虛擬網(wǎng)絡(luò)驅(qū)動;其中,該虛擬網(wǎng)絡(luò)驅(qū)動的結(jié)構(gòu)示意圖參見圖5。如圖5所示,為本發(fā)明實施例提供的一種虛擬網(wǎng)絡(luò)驅(qū)動的結(jié)構(gòu)示意圖,可以包括:接收模塊51,用于接收網(wǎng)口驅(qū)動轉(zhuǎn)發(fā)的數(shù)據(jù),所述數(shù)據(jù)為所述網(wǎng)口驅(qū)動接收到底層設(shè)備發(fā)送的數(shù)據(jù)后轉(zhuǎn)發(fā)給所述虛擬網(wǎng)絡(luò)驅(qū)動的;確定模塊52,用于確定所述網(wǎng)口驅(qū)動是否是主用網(wǎng)口驅(qū)動;發(fā)送模塊53,用于當(dāng)所述確定模塊52確定所述網(wǎng)口驅(qū)動是主用網(wǎng)口驅(qū)動時,將所述數(shù)據(jù)通過網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)給上層應(yīng)用程序。在本發(fā)明實施例中,所述虛擬網(wǎng)絡(luò)驅(qū)動還可以包括:指針處理模塊54,用于在所述接口模塊51接收到網(wǎng)口驅(qū)動轉(zhuǎn)發(fā)的數(shù)據(jù)之前,保存第一處理函數(shù)的函數(shù)指針,并將第一處理函數(shù)的函數(shù)指針替換為第二處理函數(shù)的函數(shù)指針;其中,所述第一處理函數(shù)用于所述網(wǎng)口驅(qū)動將所述數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)協(xié)議棧,所述第二處理函數(shù)用于所述虛擬網(wǎng)絡(luò)驅(qū)動對接收到的數(shù)據(jù)進行處理并轉(zhuǎn)發(fā)給網(wǎng)絡(luò)協(xié)議棧。其中,所述確定模塊52具體用于,通過以下方式確定網(wǎng)口驅(qū)動是否是主用網(wǎng)口驅(qū)動:判斷是否配置有網(wǎng)口驅(qū)動組;若判斷為是,根據(jù)預(yù)先配置的網(wǎng)口驅(qū)動組分發(fā)策略確定所述網(wǎng)口驅(qū)動是否是主用網(wǎng)口驅(qū)動組中的網(wǎng)口驅(qū)動;若判斷為否,根據(jù)預(yù)先配置的網(wǎng)口驅(qū)動分發(fā)策略確定所述網(wǎng)口驅(qū)動是否是主用網(wǎng)口驅(qū)動。其中,所述發(fā)送模塊53具體用于,根據(jù)預(yù)先配置的數(shù)據(jù)過濾策略對所述數(shù)據(jù)進行過濾,并當(dāng)確定需要將所述數(shù)據(jù)發(fā)送給網(wǎng)絡(luò)協(xié)議棧時,將所述數(shù)據(jù)通過網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)給上層應(yīng)用程序。其中,所述發(fā)送模塊53具體用于,通過以下方式實現(xiàn)根據(jù)預(yù)先配置的數(shù)據(jù)過濾策略對所述數(shù)據(jù)進行過濾:當(dāng)所述數(shù)據(jù)為數(shù)據(jù)處理完成狀態(tài)時,確定需要將所述數(shù)據(jù)發(fā)送給網(wǎng)絡(luò)協(xié)議棧;當(dāng)所述數(shù)據(jù)為數(shù)據(jù)被截獲狀態(tài)時,確定不需要將所述數(shù)據(jù)發(fā)送給所述網(wǎng)絡(luò)協(xié)議棧?;谏鲜龇椒鞒滔嗤募夹g(shù)構(gòu)思,本發(fā)明實施例還提供了一種網(wǎng)絡(luò)設(shè)備,可以應(yīng)用于上述方法實施例。在本發(fā)明實施例中,網(wǎng)絡(luò)設(shè)備除了包括網(wǎng)口驅(qū)動、網(wǎng)絡(luò)協(xié)議棧、以及上層應(yīng)用程序之外,還包括虛擬網(wǎng)絡(luò)驅(qū)動;其中,該虛擬網(wǎng)絡(luò)驅(qū)動的結(jié)構(gòu)示意圖參見圖6。如圖6所示,為本發(fā)明實施例提供的一種虛擬網(wǎng)絡(luò)驅(qū)動的結(jié)構(gòu)示意圖,可以包括:接收模塊61,用于接收網(wǎng)絡(luò)協(xié)議棧轉(zhuǎn)發(fā)的數(shù)據(jù),所述數(shù)據(jù)為所述網(wǎng)絡(luò)協(xié)議棧接收到上層應(yīng)用程序發(fā)送的數(shù)據(jù)后轉(zhuǎn)發(fā)給所述虛擬網(wǎng)絡(luò)驅(qū)動的;發(fā)送模塊63,用于通過主用網(wǎng)口驅(qū)動將所述數(shù)據(jù)轉(zhuǎn)發(fā)給底層設(shè)備。在本發(fā)明實施例中,所述虛擬網(wǎng)絡(luò)驅(qū)動還包括:判斷模塊62,用于判斷是否配置有網(wǎng)口驅(qū)動組;所述發(fā)送模塊63具體用于,當(dāng)所述判斷模塊62的判斷結(jié)果為是時,根據(jù)預(yù)先配置的網(wǎng)口驅(qū)動組分發(fā)策略查找主用網(wǎng)口驅(qū)動組,并通過所述主用網(wǎng)口驅(qū)動組中的網(wǎng)口驅(qū)動將所述數(shù)據(jù)轉(zhuǎn)發(fā)給底層設(shè)備;當(dāng)所述判斷模塊的判斷結(jié)果為否時,根據(jù)預(yù)先配置的網(wǎng)口驅(qū)動分發(fā)策略查找主用網(wǎng)口驅(qū)動,并通過所述主用網(wǎng)口驅(qū)動將所述數(shù)據(jù)轉(zhuǎn)發(fā)給底層設(shè)備。其中,所述發(fā)送模塊63還用于,當(dāng)查找主用網(wǎng)口驅(qū)動失敗時,禁止所述數(shù)據(jù)轉(zhuǎn)發(fā)。通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機,個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視本發(fā)明的保護范圍。