本發(fā)明涉及通信領(lǐng)域,尤其涉及一種設(shè)備的發(fā)現(xiàn)方法和裝置。
背景技術(shù):
現(xiàn)有技術(shù)中設(shè)備發(fā)現(xiàn)功能一般依賴于第三方軟件DLNA(Digital Living Network Alliance,數(shù)字生活網(wǎng)絡(luò)聯(lián)盟)的UPnP(Universal Plug and Play,通用即插即用協(xié)議)。DLNA是一個由消費性電子、移動電話以及電腦廠商組成的聯(lián)盟組織。使用DLNA有很多的限制,比如DLNA規(guī)定了所使用的網(wǎng)絡(luò)協(xié)議,必須支持IPv4,規(guī)定了所有DLNA設(shè)備都必須支持使用HTTP協(xié)議進(jìn)行媒體的傳輸?shù)?,因此使用DLNA有很多的局限。
由于現(xiàn)有技術(shù)中設(shè)備發(fā)現(xiàn)功能一般依賴于第三方軟件DLNA,當(dāng)被依賴的軟件DLNA不存在或者發(fā)生變化時,發(fā)現(xiàn)設(shè)備功能就無法實現(xiàn),所以依賴于DLNA發(fā)現(xiàn)設(shè)備就不可避免地產(chǎn)生軟件耦合。軟件耦合是指兩個或兩個以上的軟件相互依賴于對方的一個量度。此外,由于第三方軟件帶來的一些副作用也難以避免,比如DLNA是通過有線網(wǎng)絡(luò)或者無線網(wǎng)絡(luò)連接的,對網(wǎng)絡(luò)會有延遲;并且DLNA發(fā)現(xiàn)設(shè)備的流程復(fù)雜,這都會導(dǎo)致發(fā)現(xiàn)設(shè)備的速度不快。
技術(shù)實現(xiàn)要素:
本發(fā)明的主要目的在于提出一種設(shè)備的發(fā)現(xiàn)方法和裝置,旨在實現(xiàn)跳過DLNA復(fù)雜的流程發(fā)現(xiàn)設(shè)備,加快發(fā)現(xiàn)設(shè)備的速度。
為實現(xiàn)上述目的,本發(fā)明提供一種設(shè)備的發(fā)現(xiàn)方法,所述方法包括如下步驟:
當(dāng)前終端監(jiān)聽網(wǎng)絡(luò)中的數(shù)據(jù)包;
判斷所述數(shù)據(jù)包是否是自定義數(shù)據(jù)包;
若是,則當(dāng)前終端解析所述自定義數(shù)據(jù)包,獲得所述待連接終端的信息;
根據(jù)所述待連接終端的信息,更新當(dāng)前終端的可連接設(shè)備列表。
可選地,所述當(dāng)前終端解析所述自定義數(shù)據(jù)包,獲得待連接終端的信息的步驟之后包括:
啟動心跳線程,獲得網(wǎng)絡(luò)中的心跳包;
所述根據(jù)所述待連接終端的信息,更新當(dāng)前終端的可連接設(shè)備列表的步驟包括:
根據(jù)獲得的心跳包和待連接終端的信息確定待連接設(shè)備的在線信息;
根據(jù)待連接設(shè)備的在線信息更新所述可連接設(shè)備列表。
可選地,所述根據(jù)獲得的心跳包和待連接終端的信息確定待連接設(shè)備的在線信息的步驟包括:
獲取網(wǎng)絡(luò)中的心跳包;
解析所述心跳包,獲得發(fā)送所述心跳包的設(shè)備標(biāo)識;
根據(jù)獲得的設(shè)備標(biāo)識和待連接終端的信息確定待連接設(shè)備的在線信息。
可選地,所述方法還包括:
與可連接設(shè)備列表中的設(shè)備建立用戶數(shù)據(jù)協(xié)議連接。
可選地,所述自定義數(shù)據(jù)包包括設(shè)備IP地址和ID。
此外,為實現(xiàn)上述目的,本發(fā)明還提供一種設(shè)備的發(fā)現(xiàn)裝置,其特征在于,所述裝置包括:
監(jiān)聽模塊,用于當(dāng)前終端監(jiān)聽網(wǎng)絡(luò)中的數(shù)據(jù)包;
判斷模塊,用于判斷所述數(shù)據(jù)包是否是自定義數(shù)據(jù)包;
解析模塊,用于若是,則當(dāng)前終端解析所述自定義數(shù)據(jù)包,獲得待連接終端的信息;
更新模塊,用于根據(jù)所述待連接終端的信息,更新當(dāng)前終端的可連接設(shè)備列表。
可選地,所述裝置還包括:
獲得模塊,用于啟動心跳線程,獲得網(wǎng)絡(luò)中的心跳包;
所述更新模塊包括:
確定單元,用于根據(jù)獲得的心跳包和待連接終端的信息確定待連接設(shè)備的在線信息;
更新單元,用于根據(jù)待連接設(shè)備的在線信息更新所述可連接設(shè)備列表。
可選地,所述確定單元包括:
獲取子單元,獲取網(wǎng)絡(luò)中的心跳包;
解析子單元,用于解析所述心跳包,獲得發(fā)送所述心跳包的設(shè)備標(biāo)識;
確定子單元,用于根據(jù)獲得的設(shè)備標(biāo)識和待連接終端的信息確定待連接設(shè)備的在線信息。
可選地,所述裝置還包括:
連接模塊,用于與可連接設(shè)備列表中的設(shè)備建立用戶數(shù)據(jù)協(xié)議連接。
可選地,所述自定義數(shù)據(jù)包包括設(shè)備IP地址和ID。
本發(fā)明通過當(dāng)前終端監(jiān)聽網(wǎng)絡(luò)中的數(shù)據(jù)包;判斷所述數(shù)據(jù)包是否是自定義數(shù)據(jù)包;若是,則當(dāng)前終端解析所述自定義數(shù)據(jù)包,獲得待連接終端的信息;根據(jù)所述待連接終端的信息,更新當(dāng)前終端的可連接設(shè)備列表。通過上述方式,本發(fā)明通過當(dāng)前終端監(jiān)聽網(wǎng)絡(luò)中的數(shù)據(jù)包,判斷監(jiān)聽到的是否是待連接設(shè)備發(fā)送的自定義數(shù)據(jù)包,然后根據(jù)監(jiān)聽到的自定義數(shù)據(jù)包實現(xiàn)對待連接終端的發(fā)現(xiàn),不需要依賴于第三方軟件DLNA,因此不會產(chǎn)生使用第三方軟件帶來的軟件耦合的問題,跳過了DLNA發(fā)現(xiàn)設(shè)備的復(fù)雜流程,發(fā)現(xiàn)流程也相對簡單,并且能夠加快設(shè)備發(fā)現(xiàn)的速度。
附圖說明
圖1為本發(fā)明設(shè)備的發(fā)現(xiàn)方法第一實施例的流程示意圖;
圖2為本發(fā)明設(shè)備的發(fā)現(xiàn)方法第二實施例的流程示意圖;
圖3為本發(fā)明實施例中根據(jù)獲得的心跳包和待連接終端的信息確定待連接設(shè)備的在線信息的細(xì)化流程示意圖;
圖4為本發(fā)明設(shè)備的發(fā)現(xiàn)方法第三實施例的流程示意圖;
圖5為本發(fā)明設(shè)備的發(fā)現(xiàn)裝置第一實施例的功能模塊示意圖;
圖6為本發(fā)明設(shè)備的發(fā)現(xiàn)裝置第二實施例的功能模塊示意圖;
圖7為本發(fā)明實施例中確定單元的細(xì)化功能示意圖;
圖8為本發(fā)明設(shè)備的發(fā)現(xiàn)裝置第三實施例的流程示意圖。
本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做進(jìn)一步說明。
具體實施方式
應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明提供一種設(shè)備的發(fā)現(xiàn)方法。
參照圖1,圖1為本發(fā)明設(shè)備的發(fā)現(xiàn)方法第一實施例的流程示意圖。
本發(fā)明設(shè)備發(fā)現(xiàn)的方法包括如下步驟:
步驟S100,當(dāng)前終端監(jiān)聽網(wǎng)絡(luò)中的數(shù)據(jù)包。
為保證本發(fā)明能夠正常實施,本發(fā)明中各個設(shè)備需要在同一網(wǎng)絡(luò)中,因此可以事先建立局域網(wǎng),當(dāng)然也可以采用廣域網(wǎng),即各個設(shè)備可以通過廣域網(wǎng)進(jìn)行通信。具體地,各個設(shè)備可以通過TCP/IP基礎(chǔ)協(xié)議進(jìn)行通信,具體實施中也可以通過其他的協(xié)議進(jìn)行通信,比如采用NetBEUI協(xié)議。
在使用過程中,用戶可以將當(dāng)前終端上電開機(jī),然后接入事先建立好的網(wǎng)絡(luò),網(wǎng)絡(luò)中預(yù)先設(shè)置為可以相互發(fā)現(xiàn)的設(shè)備可以向網(wǎng)絡(luò)中發(fā)送自定義數(shù)據(jù)包,當(dāng)然網(wǎng)絡(luò)中的各個設(shè)備也可以相互發(fā)送自定義數(shù)據(jù)包;在將當(dāng)前終端上電開機(jī),并接入事先建立好的網(wǎng)絡(luò)后,用戶可以通過當(dāng)前終端或當(dāng)前終端自動向網(wǎng)絡(luò)中發(fā)送自定義數(shù)據(jù)包。所述自定義數(shù)據(jù)包攜帶了當(dāng)前終端的描述信息。描述信息至少包括該設(shè)備IP地址和設(shè)備唯一ID,具體實施中除了包括設(shè)備IP地址和ID之外,還可以包括端口號、軟件版本、硬件版本和設(shè)備類型中的至少一種。本實施例中描述信息中包括該設(shè)備IP地址、設(shè)備唯一ID、端口號、軟件版本、硬件版本和設(shè)備類型,其自定義數(shù)據(jù)包詳細(xì)數(shù)據(jù)結(jié)構(gòu)如下:
{
unsigned char[128]ipaddr,
unsigned int port,
unsigned int device_type,
unsigned char[128]device_id,
unsigned char[128]software_version,
unsigned char[128]hardware_version,
}
在將當(dāng)前終端上電開機(jī),并接入事先建立好的網(wǎng)絡(luò)后,當(dāng)前終端同時監(jiān)聽來自網(wǎng)絡(luò)中的數(shù)據(jù)包。當(dāng)前終端可以是可以相互發(fā)現(xiàn)的設(shè)備中的任何一個。
在本實施例中,所述終端包括手機(jī)、PAD、電視、電腦等可以向計算機(jī)輸入程序和數(shù)據(jù)或接收計算機(jī)輸出處理結(jié)果的設(shè)備。
步驟S200,判斷所述數(shù)據(jù)包是否是自定義數(shù)據(jù)包。
在監(jiān)聽到數(shù)據(jù)包時,可以對監(jiān)聽到的數(shù)據(jù)包進(jìn)行判斷,判斷監(jiān)聽到的數(shù)據(jù)包是否是自定義數(shù)據(jù)包。
具體地,通過自定義數(shù)據(jù)包的名稱或者標(biāo)識位判斷監(jiān)聽到的數(shù)據(jù)包是否是自定義數(shù)據(jù)包;若監(jiān)聽到的數(shù)據(jù)包里含有名稱和標(biāo)識位中的至少一種,則該數(shù)據(jù)包為自定義數(shù)據(jù)包。
步驟S300,若是,則當(dāng)前終端解析所述自定義數(shù)據(jù)包,獲得待連接終端的信息。
在當(dāng)前終端獲取到其他設(shè)備發(fā)送的自定義數(shù)據(jù)包后,當(dāng)前終端解析獲取到的自定義數(shù)據(jù)包,從而獲得其他終端信息。具體地,本實施例中對獲得的自定義數(shù)據(jù)包進(jìn)行解析,獲得待連接終端的設(shè)備IP地址和設(shè)備唯一ID。
具體實施中根據(jù)自定義數(shù)據(jù)包包括的內(nèi)容不同,獲得其他終端信息也會不同,比如如果自定義數(shù)據(jù)包包括該設(shè)備IP地址、設(shè)備唯一ID、端口號、軟件版本、硬件版本和設(shè)備類型,則解析獲得其他設(shè)備的IP地址、設(shè)備唯一ID、端口號、軟件版本、硬件版本和設(shè)備類型。
步驟S400,根據(jù)所述待連接終端的信息,更新當(dāng)前終端的可連接設(shè)備列表。
本實施例中還事先建立有一個設(shè)備列表,此列表的作用為記錄可連接的設(shè)備,包括可連接的設(shè)備的標(biāo)識信息,比如設(shè)備ID等。具體實施中還可以包括設(shè)備IP地址等。
具體地,本實施例中設(shè)備列表可以為一個可實時更新的列表,具體實施中設(shè)備列表還可以為一個定時更新的列表。本實施例在網(wǎng)絡(luò)中發(fā)現(xiàn)設(shè)備時,將該設(shè)備的信息反饋到列表中,在列表中記錄設(shè)備的信息,記錄完之后,對可連接設(shè)備列表進(jìn)行更新。
本實施例中通過當(dāng)前終端監(jiān)聽網(wǎng)絡(luò)中的數(shù)據(jù)包;判斷所述數(shù)據(jù)包是否是自定義數(shù)據(jù)包;若是,則當(dāng)前終端解析所述自定義數(shù)據(jù)包,獲得待連接終端的信息;根據(jù)所述待連接終端的信息,更新當(dāng)前終端的可連接設(shè)備列表。通過上述方式,本實施例通過當(dāng)前終端監(jiān)聽網(wǎng)絡(luò)中的數(shù)據(jù)包,判斷監(jiān)聽到的是否是待連接設(shè)備發(fā)送的自定義數(shù)據(jù)包,然后根據(jù)監(jiān)聽到的自定義數(shù)據(jù)包實現(xiàn)對待連接終端的發(fā)現(xiàn),不需要依賴于第三方軟件DLNA,因此不會產(chǎn)生使用第三方軟件帶來的軟件耦合的問題,跳過了DLNA發(fā)現(xiàn)設(shè)備的復(fù)雜流程,發(fā)現(xiàn)流程也相對簡單,并且能夠加快設(shè)備發(fā)現(xiàn)的速度。
進(jìn)一步地,參照圖2,圖2為本發(fā)明設(shè)備的發(fā)現(xiàn)方法第二實施例的流程示意圖。
基于本發(fā)明設(shè)備的發(fā)現(xiàn)方法第一實施例,步驟S300之后的步驟可以包括:
S500,啟動心跳線程,獲得網(wǎng)絡(luò)中的心跳包。
基于本發(fā)明設(shè)備發(fā)現(xiàn)的方法第一實施例,步驟S400可以包括:
S410,根據(jù)獲得的心跳包和待連接終端的信息確定待連接設(shè)備的在線信息;
S420,根據(jù)待連接設(shè)備的在線信息更新所述可連接設(shè)備列表。
為了確定發(fā)現(xiàn)的可連接設(shè)備是否實時在線,本實施例中所有終端可以實時監(jiān)聽來自網(wǎng)絡(luò)中的心跳包。本實施例中心跳包為UDP(User Data Protocol,用戶數(shù)據(jù)協(xié)議)包,UDP是與TCP相對應(yīng)的協(xié)議,它是面向非連接的協(xié)議,它不與對方建立連接,而是直接就把數(shù)據(jù)包發(fā)送過去。每個UDP數(shù)據(jù)包都有完整的源、目的地址及分組編號,各自在網(wǎng)絡(luò)中獨立傳輸。當(dāng)然心跳包還可以為其他協(xié)議的數(shù)據(jù)包。
網(wǎng)絡(luò)中各個設(shè)備都會向網(wǎng)絡(luò)中發(fā)送心跳包,同時各個設(shè)備都可以在網(wǎng)絡(luò)中監(jiān)聽心跳包,通過監(jiān)聽心跳包獲取其他設(shè)備的在線情況。心跳包是在設(shè)備之間或者設(shè)備向網(wǎng)絡(luò)定時通知對方自己狀態(tài)的一個自己定義的命令字,按照一定的時間間隔發(fā)送,類似于心跳。用來判斷對方(設(shè)備,進(jìn)程或其它網(wǎng)元)是否正常運行而定時發(fā)送簡單的通訊包。
心跳包的內(nèi)容沒有特別規(guī)定,一般都是很小的包,或者是只包含包頭的一個空包。因此用心跳包來獲取設(shè)備在線信息,不會加重服務(wù)器的負(fù)擔(dān)。因此本實施例中通過啟動心跳線程,根據(jù)待連接終端信息獲得對應(yīng)的心跳包;通過心跳包確定待連接設(shè)備的在線信息;根據(jù)待連接設(shè)備的在線信息更新所述可連接設(shè)備列表。
在本實施例中,通過啟動心跳線程,獲得網(wǎng)絡(luò)中的心跳包;根據(jù)獲得的心跳包和待連接終端的信息確定待連接設(shè)備的在線信息;根據(jù)待連接設(shè)備的在線信息更新所述可連接設(shè)備列表。通過上述方式,用心跳包來獲取設(shè)備在線信息,不會加重服務(wù)器的負(fù)擔(dān)。能夠可以快速地獲取其他終端信息,提高了可連接設(shè)備列表的準(zhǔn)確性。
進(jìn)一步地,參照圖3,圖3為本發(fā)明實施例中根據(jù)獲得的心跳包和待連接終端的信息確定待連接設(shè)備的在線信息的步驟包括的細(xì)化流程示意圖。
基于本發(fā)明設(shè)備的發(fā)現(xiàn)方法第一實施例,步驟S410可以包括:
S411,獲取網(wǎng)絡(luò)中的心跳包;
S412,解析所述心跳包,獲得發(fā)送所述心跳包的設(shè)備標(biāo)識;
S413,根據(jù)獲得的設(shè)備標(biāo)識和待連接終端的信息確定待連接設(shè)備的在線信息。
具體地,本實施例中當(dāng)前終端自動獲取來自網(wǎng)絡(luò)中的心跳包,解析所述心跳包,通過UDP心跳包中所包含的完整的源、目的地址及分組編號判斷是否是所述列表中可連接設(shè)備的心跳包。若是,則獲取設(shè)備在線信息,對更新可連接設(shè)備列表中的設(shè)備進(jìn)行更新,將不在線的設(shè)備移出可連接設(shè)備列表;若否,則忽略所述心跳包。
在本實施例中,通過獲取網(wǎng)絡(luò)中的心跳包;解析所述心跳包,獲得發(fā)送所述心跳包的設(shè)備標(biāo)識;根據(jù)獲得的設(shè)備標(biāo)識和待連接終端的信息確定待連接設(shè)備的在線信息。通過上述方式,用心跳包來獲取設(shè)備在線信息,不會加重服務(wù)器的負(fù)擔(dān)。能夠?qū)崟r確定設(shè)備的在線情況,使得可連接設(shè)備列表更加準(zhǔn)確。
進(jìn)一步地,參照圖4,圖4為本發(fā)明設(shè)備發(fā)現(xiàn)的方法第三實施例的流程示意圖;
基于本發(fā)明設(shè)備的發(fā)現(xiàn)方法第一實施例,所述方法還包括:
S600,與可連接設(shè)備列表中的設(shè)備建立用戶數(shù)據(jù)協(xié)議連接。
本實施例中在啟動心跳線程,根據(jù)檢測到各個設(shè)備的在線情況,更新可連接列表后,可連接設(shè)備列表中存在的設(shè)備即為在線的設(shè)備,此時,本實施例中建立與可連接設(shè)備列表中各個設(shè)備的連接。
具體地,與可連接設(shè)備列表中的設(shè)備建立UDP連接。UDP是定義用來在互連網(wǎng)絡(luò)環(huán)境中提供包交換的計算機(jī)通信的協(xié)議。此協(xié)議默認(rèn)認(rèn)為網(wǎng)路協(xié)議(IP)是其下層協(xié)議。此協(xié)議提供了向另一用戶程序發(fā)送信息的最簡便的協(xié)議機(jī)制。UDP連接只是邏輯上的連接,并不建立物理連接,具有資源消耗小,處理速度快的優(yōu)點。具體實施中還可以建立其他連接。
進(jìn)一步地,本實施例中與可連接設(shè)備列表中的設(shè)備建立UDP連接的過程可以包括向可連接設(shè)備列表中的設(shè)備直接發(fā)送UDP數(shù)據(jù)包,確認(rèn)第一終端與可連接設(shè)備列表中的設(shè)備之間的通信是否正常,若可連接設(shè)備列表中的設(shè)備有回應(yīng),那么說明對方網(wǎng)絡(luò)是正常的。
需要特別說明的是,在與可連接設(shè)備列表中的設(shè)備建立UDP連接后,第一終端可以重新監(jiān)聽網(wǎng)絡(luò)中的自定義數(shù)據(jù)包。
在本實施例中在更新可連接設(shè)備列表后,與可連接設(shè)備列表中的設(shè)備建立UDP連接。通過上述方式,本實施例中與其他設(shè)備建立UDP連接,資源消耗小,處理速度快,并且可以根據(jù)UDP連接發(fā)送的信息快速確認(rèn)第一終端與可連接設(shè)備列表中的設(shè)備之間的通信是否正常,進(jìn)一步確認(rèn)了可連接設(shè)備列表中的設(shè)備是否可以連接。
本發(fā)明還提供一種設(shè)備的發(fā)現(xiàn)裝置。
參照圖5,圖5為本發(fā)明設(shè)備的發(fā)現(xiàn)裝置第一實施例的功能模塊示意圖。
在本實施例中,該設(shè)備的發(fā)現(xiàn)裝置包括:
監(jiān)聽模塊100,用于當(dāng)前終端監(jiān)聽網(wǎng)絡(luò)中的數(shù)據(jù)包。
為保證本發(fā)明能夠正常實施,本發(fā)明中各個設(shè)備需要在同一網(wǎng)絡(luò)中,因此可以事先建立局域網(wǎng),當(dāng)然也可以采用廣域網(wǎng),即各個設(shè)備可以通過廣域網(wǎng)進(jìn)行通信。具體地,各個設(shè)備可以通過TCP/IP基礎(chǔ)協(xié)議進(jìn)行通信,具體實施中也可以通過其他的協(xié)議進(jìn)行通信,比如采用NetBEUI協(xié)議。
在使用過程中,用戶可以將當(dāng)前終端上電開機(jī),然后接入事先建立好的網(wǎng)絡(luò),網(wǎng)絡(luò)中預(yù)先設(shè)置為可以相互發(fā)現(xiàn)的設(shè)備可以向網(wǎng)絡(luò)中發(fā)送自定義數(shù)據(jù)包,當(dāng)然網(wǎng)絡(luò)中的各個設(shè)備也可以相互發(fā)送自定義數(shù)據(jù)包;在將當(dāng)前終端上電開機(jī),并接入事先建立好的網(wǎng)絡(luò)后,用戶可以通過當(dāng)前終端或當(dāng)前終端自動向網(wǎng)絡(luò)中發(fā)送自定義數(shù)據(jù)包。所述自定義數(shù)據(jù)包攜帶了當(dāng)前終端的描述信息。描述信息至少包括該設(shè)備IP地址和設(shè)備唯一ID,具體實施中除了包括設(shè)備IP地址和ID之外,還可以包括端口號、軟件版本、硬件版本和設(shè)備類型中的至少一種。本實施例中描述信息中包括該設(shè)備IP地址、設(shè)備唯一ID、端口號、軟件版本、硬件版本和設(shè)備類型,其自定義數(shù)據(jù)包詳細(xì)數(shù)據(jù)結(jié)構(gòu)如下:
{
unsigned char[128]ipaddr,
unsigned int port,
unsigned int device_type,
unsigned char[128]device_id,
unsigned char[128]software_version,
unsigned char[128]hardware_version,
}
當(dāng)然,在將當(dāng)前終端上電開機(jī),并接入事先建立好的網(wǎng)絡(luò)后,當(dāng)前終端同時監(jiān)聽來自網(wǎng)絡(luò)中的數(shù)據(jù)包。當(dāng)前終端可以是可以相互發(fā)現(xiàn)的設(shè)備中的任何一個。
在本實施例中,所述終端包括手機(jī)、PAD、電視、電腦等可以向計算機(jī)輸入程序和數(shù)據(jù)或接收計算機(jī)輸出處理結(jié)果的設(shè)備。
判斷模塊200,用于判斷所述數(shù)據(jù)包是否是自定義數(shù)據(jù)包。
在監(jiān)聽到數(shù)據(jù)包時,可以對監(jiān)聽到的數(shù)據(jù)包進(jìn)行判斷,判斷監(jiān)聽到的數(shù)據(jù)包是否是自定義數(shù)據(jù)包。
具體地,通過自定義數(shù)據(jù)包的名稱或者標(biāo)識位判斷監(jiān)聽到的數(shù)據(jù)包是否是自定義數(shù)據(jù)包;若監(jiān)聽到的數(shù)據(jù)包里含有名稱和標(biāo)識位中的至少一種,則該數(shù)據(jù)包為自定義數(shù)據(jù)包。
解析模塊300,用于當(dāng)前終端解析所述自定義數(shù)據(jù)包,獲得待連接終端的信息。
在當(dāng)前終端獲取到其他設(shè)備發(fā)送的自定義數(shù)據(jù)包后,當(dāng)前終端解析獲取到的自定義數(shù)據(jù)包,從而獲得其他終端信息。具體地,本實施例中對獲得的自定義數(shù)據(jù)包進(jìn)行解析,獲得待連接終端的設(shè)備IP地址和設(shè)備唯一ID。
具體實施中根據(jù)自定義數(shù)據(jù)包包括的內(nèi)容不同,獲得其他終端信息也會不同,比如如果自定義數(shù)據(jù)包包括該設(shè)備IP地址、設(shè)備唯一ID、端口號、軟件版本、硬件版本和設(shè)備類型,則解析獲得其他設(shè)備的IP地址、設(shè)備唯一ID、端口號、軟件版本、硬件版本和設(shè)備類型。
更新模塊400,用于根據(jù)所述待連接終端的信息,更新當(dāng)前終端的可連接設(shè)備列表。
本實施例中還事先建立有一個設(shè)備列表,此列表的作用為記錄可連接的設(shè)備,包括可連接的設(shè)備的標(biāo)識信息,比如設(shè)備ID等。具體實施中還可以包括設(shè)備IP地址等。
具體地,本實施例中設(shè)備列表可以為一個可實時更新的列表,具體實施中設(shè)備列表還可以為一個定時更新的列表。本實施例在網(wǎng)絡(luò)中發(fā)現(xiàn)設(shè)備時,將該設(shè)備的信息反饋到列表中,在列表中記錄設(shè)備的信息,記錄完之后,對可連接設(shè)備列表進(jìn)行更新。
在本實施例中,通過監(jiān)聽模塊100監(jiān)聽網(wǎng)絡(luò)中的數(shù)據(jù)包;判斷模塊200判斷所述數(shù)據(jù)包是否是自定義數(shù)據(jù)包;若是,則解析模塊300解析所述自定義數(shù)據(jù)包,獲得待連接終端的信息;更新模塊400根據(jù)所述待連接終端的信息,更新當(dāng)前終端的可連接設(shè)備列表。通過上述方式,本實施例通過當(dāng)前終端監(jiān)聽網(wǎng)絡(luò)中的數(shù)據(jù)包,判斷監(jiān)聽到的是否是待連接設(shè)備發(fā)送的自定義數(shù)據(jù)包,然后根據(jù)監(jiān)聽到的自定義數(shù)據(jù)包實現(xiàn)對待連接終端的發(fā)現(xiàn),不需要依賴于第三方軟件DLNA,因此不會產(chǎn)生使用第三方軟件帶來的軟件耦合的問題,跳過了DLNA發(fā)現(xiàn)設(shè)備的復(fù)雜流程,發(fā)現(xiàn)流程也相對簡單,并且能夠加快設(shè)備發(fā)現(xiàn)的速度。
進(jìn)一步地,參照圖6,圖6為本發(fā)明設(shè)備的發(fā)現(xiàn)裝置第二實施例的功能模塊示意圖。
基于本發(fā)明設(shè)備的發(fā)現(xiàn)裝置第一實施例,所述裝置還包括:
獲得模塊500,啟動心跳線程,獲得網(wǎng)絡(luò)中的心跳包;
更新模塊400可以包括:
確定單元410,用于根據(jù)獲得的心跳包和待連接終端的信息確定待連接設(shè)備的在線信息;
更新單元420,根據(jù)待連接設(shè)備的在線信息更新所述可連接設(shè)備列表。
為了確定發(fā)現(xiàn)的可連接設(shè)備是否實時在線,本實施例中所有終端可以實時監(jiān)聽來自網(wǎng)絡(luò)中的心跳包。本實施例中心跳包為UDP(User Data Protocol,用戶數(shù)據(jù)協(xié)議)包,UDP是與TCP相對應(yīng)的協(xié)議,它是面向非連接的協(xié)議,它不與對方建立連接,而是直接就把數(shù)據(jù)包發(fā)送過去。每個UDP數(shù)據(jù)包都有完整的源、目的地址及分組編號,各自在網(wǎng)絡(luò)中獨立傳輸。當(dāng)然心跳包還可以為其他協(xié)議的數(shù)據(jù)包。
網(wǎng)絡(luò)中各個設(shè)備都會向網(wǎng)絡(luò)中發(fā)送心跳包,同時各個設(shè)備都可以在網(wǎng)絡(luò)中監(jiān)聽心跳包,通過監(jiān)聽心跳包獲取其他設(shè)備的在線情況。心跳包是在設(shè)備之間或者設(shè)備向網(wǎng)絡(luò)定時通知對方自己狀態(tài)的一個自己定義的命令字,按照一定的時間間隔發(fā)送,類似于心跳。用來判斷對方(設(shè)備,進(jìn)程或其它網(wǎng)元)是否正常運行而定時發(fā)送簡單的通訊包。
心跳包的內(nèi)容沒有特別規(guī)定,一般都是很小的包,或者是只包含包頭的一個空包。因此用心跳包來獲取設(shè)備在線信息,不會加重服務(wù)器的負(fù)擔(dān)。因此本實施例中通過啟動心跳線程,根據(jù)待連接終端信息獲得對應(yīng)的心跳包;通過心跳包確定待連接設(shè)備的在線信息;根據(jù)待連接設(shè)備的在線信息更新所述可連接設(shè)備列表。
在本實施例中,通過啟動心跳線程,獲得網(wǎng)絡(luò)中的心跳包;根據(jù)獲得的心跳包和待連接終端的信息確定待連接設(shè)備的在線信息;根據(jù)待連接設(shè)備的在線信息更新所述可連接設(shè)備列表。通過上述方式,用心跳包來獲取設(shè)備在線信息,不會加重服務(wù)器的負(fù)擔(dān)。能夠可以快速地獲取其他終端信息,提高了可連接設(shè)備列表的準(zhǔn)確性。
進(jìn)一步地,參照圖7,圖7為本發(fā)明實施例中確定單元的細(xì)化功能示意圖。
基于本發(fā)明設(shè)備的發(fā)現(xiàn)裝置第一實施例,確定單元410可以包括:
獲取子單元411,用于獲取網(wǎng)絡(luò)中的心跳包;
獲得子單元412,用于解析所述心跳包,獲得發(fā)送所述心跳包的設(shè)備標(biāo)識;
確定子單元413,用于根據(jù)獲得的設(shè)備標(biāo)識和待連接終端的信息確定待連接設(shè)備的在線信息。
具體地,本實施例中當(dāng)前終端自動獲取來自網(wǎng)絡(luò)中的心跳包,解析所述心跳包,通過UDP心跳包中所包含的完整的源、目的地址及分組編號判斷是否是所述列表中可連接設(shè)備的心跳包。若是,則獲取設(shè)備在線信息,對更新可連接設(shè)備列表中的設(shè)備進(jìn)行更新,將不在線的設(shè)備移出可連接設(shè)備列表;若否,則忽略所述心跳包。
在本實施例中,通過獲取網(wǎng)絡(luò)中的心跳包;解析所述心跳包,獲得發(fā)送所述心跳包的設(shè)備標(biāo)識;根據(jù)獲得的設(shè)備標(biāo)識和待連接終端的信息確定待連接設(shè)備的在線信息。通過上述方式,用心跳包來獲取設(shè)備在線信息,不會加重服務(wù)器的負(fù)擔(dān)。能夠?qū)崟r確定設(shè)備的在線情況,使得可連接設(shè)備列表更加準(zhǔn)確。
進(jìn)一步地,參照圖8,圖8為本發(fā)明設(shè)備的發(fā)現(xiàn)裝置第三實施例的流程示意圖。
基于本發(fā)明設(shè)備的發(fā)現(xiàn)裝置第一實施例,所述裝置還包括:
連接模塊600,用于與可連接設(shè)備列表中的設(shè)備建立用戶數(shù)據(jù)協(xié)議連接。
本實施例中在啟動心跳線程,根據(jù)檢測到各個設(shè)備的在線情況,更新可連接列表后,可連接設(shè)備列表中存在的設(shè)備即為在線的設(shè)備,此時,本實施例中建立與可連接設(shè)備列表中各個設(shè)備的連接。
具體地,與可連接設(shè)備列表中的設(shè)備建立UDP連接。UDP是定義用來在互連網(wǎng)絡(luò)環(huán)境中提供包交換的計算機(jī)通信的協(xié)議。此協(xié)議默認(rèn)認(rèn)為網(wǎng)路協(xié)議(IP)是其下層協(xié)議。此協(xié)議提供了向另一用戶程序發(fā)送信息的最簡便的協(xié)議機(jī)制。UDP連接只是邏輯上的連接,并不建立物理連接,具有資源消耗小,處理速度快的優(yōu)點。具體實施中還可以建立其他連接。
進(jìn)一步地,本實施例中與可連接設(shè)備列表中的設(shè)備建立UDP連接的過程可以包括向可連接設(shè)備列表中的設(shè)備直接發(fā)送UDP數(shù)據(jù)包,確認(rèn)第一終端與可連接設(shè)備列表中的設(shè)備之間的通信是否正常,若可連接設(shè)備列表中的設(shè)備有回應(yīng),那么說明對方網(wǎng)絡(luò)是正常的。
需要特別說明的是,在與可連接設(shè)備列表中的設(shè)備建立UDP連接后,第一終端可以重新監(jiān)聽網(wǎng)絡(luò)中的自定義數(shù)據(jù)包。
在本實施例中在更新可連接設(shè)備列表后,與可連接設(shè)備列表中的設(shè)備建立UDP連接。通過上述方式,本實施例中與其他設(shè)備建立UDP連接,資源消耗小,處理速度快,并且可以根據(jù)UDP連接發(fā)送的信息快速確認(rèn)第一終端與可連接設(shè)備列表中的設(shè)備之間的通信是否正常,進(jìn)一步確認(rèn)了可連接設(shè)備列表中的設(shè)備是否可以連接。
以上僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。