4] 在本公開實施例中,該終端中可以安裝有多個服務端,SSDP服務端可以根據(jù)終端 中安裝的多個服務端的配置信息,確定該多個服務端中支持SSDP的服務端。
[0125] 在步驟3032a中,獲取每個該支持SSDP的服務端的配置信息,該配置信息中包括 該服務類型和服務端的地址信息。
[0126] 服務端在終端中安裝后,終端中可以存儲有每個服務端的配置信息,SSDP服務端 可以從終端中存儲的每個服務端的配置信息中,獲取支持SSDP的服務端的配置信息。在實 際應用中,該配置信息除了包括服務類型和服務端的地址信息,還可以包括服務的版本信 息,其中,服務類型是指該支持SSDP的服務端能夠提供的服務的類型,服務端的地址信息 可以包括該支持SSDP的服務端所占用的數(shù)據(jù)通信端口,該數(shù)據(jù)通信端口用于和客戶端以 單播的形式進行數(shù)據(jù)通信;版本信息可以包括該支持SSDP的服務端所支持的操作系統(tǒng)的 名稱和版本信息,以及該服務端的產(chǎn)品名稱和版本信息。示例的,假設終端中安裝的支持 SSDP的服務端包括服務端A和服務端B,占用該終端SSDP端口的服務端為服務端C,則服務 端C獲取的服務端A的配置信息可以為如下形式:
[0127] ST:urn:schemas-upnp-〇rg:device:MediaServer:1. 0. 0
[0128] LOCATION:http ://192. 168.31. 1:8200/rootDesc. xml
[0129] SERVER:Linux/3. 0DLNAD0C/1. 50UPnP/l. 0MINIDLNA/1. I. 0
[0130] 在上述代碼中,LOCATION和SERVER為HTTP中的協(xié)議頭,其中ST字段表示該服 務端A所提供的服務類型;LOCATION(中文:地址)字段表示該服務端A的地址信息,其中 192. 168. 31. 1為服務端所在終端的IP地址,8200為該服務端A的占用的數(shù)據(jù)通信端口的 端口號;SERVER(中文:服務)字段表示該服務端A的版本信息,其中Linux/3. 0表示該服 務端A支持的操作系統(tǒng)為Linux,操作系統(tǒng)的版本為3. 0,MINIDLNA為該服務端A的產(chǎn)品名 稱,I. 1. 0為服務端A的版本信息。
[0131] 在步驟3033a中,根據(jù)每個該支持SSDP的服務端的配置信息建立服務類型和服務 端的地址信息的對應關系。
[0132] SSDP服務端獲取到每個支持SSDP的服務端的配置信息后,即可根據(jù)該配置信息 中的服務類型和服務端的地址信息,建立服務類型和服務端的地址信息的對應關系。進一 步的,由于該配置信息還可以包括服務端的版本信息,則SSDP服務的還可以根據(jù)該配置信 息中的服務類型和服務端的版本信息,建立服務類型和服務端的版本信息的對應關系。在 實際應用中,該SSDP服務端建立的服務類型和服務端的地址信息的對應關系,以及服務類 型和服務端的版本信息的對應關系,可以在一個總的服務類型、服務端的地址信息和版本 信息的對應關系表中體現(xiàn)。示例的,假設終端中安裝的支持SSDP的服務端為服務端A和 服務端B,則占用該終端SSDP端口的SSDP服務端所建立的服務類型、服務端的地址信息和 版本信息的對應關系表可以如表1所示,其中,服務端B的服務類型為urn:schemas-upnp -〇rg:device:DataCenter: 1. 0. 0,該服務類型所對應的地址信息和版本信息可以分別為: http://192. 168. 31. 1:9000/rootDesc. xml, Linux/3. 0DLNAD0C/1. 50UPnP/l. 0TIMEMACHI NE/1. 0. 0。
[0133] 表1
[0134]
[0135] 圖3-4是根據(jù)一示例性實施例示出的另一種SSDP服務端獲取服務類型和服務端 的地址信息的對應關系的方法流程圖,如圖3-4所示,在第二種實現(xiàn)方式中,該方法包括:
[0136] 在步驟3031b中,接收配置在SSDP服務端的服務類型和服務端的地址信息的對應 關系。
[0137] 在本公開實施例中,開發(fā)人員在開發(fā)該用于占用SSDP端口的SSDP服務端時,可以 直接將終端中其他多個支持SSDP的服務端的服務類型和服務端的地址信息的對應關系, 以及服務類型和服務端的版本信息的對應關系寫入該SSDP服務端的配置信息中,因此當 該SSDP服務端通過SSDP端口接收到客戶端發(fā)送的服務發(fā)現(xiàn)請求時,可以直接從配置信息 中獲取該服務類型和服務端的地址信息的對應關系,以及該服務類型和服務端的版本信息 的對應關系,并根據(jù)該兩個對應關系,分別獲取客戶端所請求的服務類型對應的目標地址 信息和目標版本信息。在實際應用中,開發(fā)人員可以將該服務類型和服務端的地址信息的 對應關系,以及服務類型和服務端的版本信息的對應關系寫入至一個總的服務類型、服務 端的地址信息和版本信息的對應關系表中,并將該服務類型、服務端的地址信息和版本信 息的對應關系表寫入至該SSDP服務端的配置信息中。示例的,開發(fā)人員在該SSDP服務端 的配置信息中寫入的對應關系可以如上述表1所示。
[0138] 在本公開實施例中,當SSDP服務端接收到的服務發(fā)現(xiàn)請求中,客戶端所 請求的服務類型為:ST:urn:schemas-upnp-〇rg:device:MediaServe;r:L0.0 時, SSDP服務端可以從表1所示的對應關系中,獲取到該服務類型對應的目標地址信息: http ://192. 168. 31. l:8200/rootDesc. xml 和目標版本信息:Linux/3. 0DLNAD0C/1. 50UPn P/l. 0MINIDLNA/1. I. 0。
[0139] 在步驟304中,SSDP服務端檢測預設時間段內(nèi),通過該SSDP端口接收的服務發(fā)現(xiàn) 請求的個數(shù)。
[0140] 該預設時間段是SSDP服務端中設置的并發(fā)時間段,在該預設時間段內(nèi)接收到的 服務發(fā)現(xiàn)請求,可以認為是同時接收到的。
[0141] 在步驟305中,當該服務發(fā)現(xiàn)請求的個數(shù)等于1時,SSDP服務端向該服務發(fā)現(xiàn)請 求對應的客戶端發(fā)送服務響應消息。
[0142] 當SSDP服務端檢測到預設時間段內(nèi)接收的服務發(fā)現(xiàn)請求的個數(shù)等于1時,SSDP 服務端可以確定該服務發(fā)現(xiàn)請求所在的請求報文,解析該請求報文,并獲取該請求報文中 攜帶的客戶端的地址信息,然后根據(jù)該客戶端的地址信息,向該服務發(fā)現(xiàn)請求對應的客戶 端發(fā)送服務響應消息,該服務響應消息包括該目標地址信息,以使得該客戶端根據(jù)該服務 響應消息,向該目標地址信息對應的服務端發(fā)送服務請求消息;該服務響應消息中還包括 目標版本信息,以使得該客戶端可以根據(jù)該目標版本信息,判斷該客戶端所在終端的操作 系統(tǒng)是否能夠該目標版本信息中的對操作系統(tǒng)的要求。示例的,假設SSDP服務端在預設時 間段內(nèi)只接收到1個服務發(fā)現(xiàn)請求,且該服務發(fā)現(xiàn)請求中所包括的請求的服務類型為:ST: urn:schemas-upnp-〇rg:device:MediaServer: 1. 0· 0,SSDP 服務端通過解析該客戶端發(fā)送 的請求報文,獲取到的該客戶端的地址信息為:http://192. 168. 32. 1:8000,則該SSDP服 務端可以根據(jù)該地址信息,向該服務發(fā)現(xiàn)請求對應的客戶端發(fā)送服務響應消息,該服務響 應消息可以包括目標地址信息:http://192. 168. 31. l:8200/rootDesc. xml和目標版本信 息:Linux/3. 0DLNAD0C/1. 50UPnP/l. 0MINIDLNA/1. L 0。
[0143] 在步驟306中,當該服務發(fā)現(xiàn)請求的個數(shù)大于1時,SSDP服務端按照最長等待時 長對該服務發(fā)現(xiàn)請求進行升序排序得到響應優(yōu)先級列表。
[0144] 在本公開實施例中,客戶端發(fā)送的服務發(fā)現(xiàn)請求中還包括最長等待時長(MX),該 最長等待時長的單位為秒(s),該最長等待時長用于指示該客戶端發(fā)送服務發(fā)現(xiàn)請求后,允 許接收服務響應消息的時長。當SSDP服務端檢測到預設時間段內(nèi)接收的服務發(fā)現(xiàn)請求的 個數(shù)等大于1時,SSDP服務端可以按照該最長等待時長對該服務發(fā)現(xiàn)請求進行升序排序, 并得到響應優(yōu)先級列表,在該響應優(yōu)先級列表中,最長等待時長越短的服務發(fā)現(xiàn)請求的響 應優(yōu)先級越高,即SSDP服務端可以最先響應最長等待時長最短的服務發(fā)現(xiàn)請求。示例的, 假設SSDP服務端在預設時間段內(nèi)接收到2個服務發(fā)現(xiàn)請求:請求1和請求2,該兩個服務 發(fā)現(xiàn)請求中的最長等待時長分別為:MX1 = 4s,MX2 = 3s,則SSDP服務端根據(jù)該兩個最長等 待時長對該服務發(fā)現(xiàn)請求進行升序排序,得到的響應優(yōu)先級列表可以為:請求2,請求1。
[0145] 在步驟307中,SSDP服務端按照該響應優(yōu)先級列表向各個該服務發(fā)現(xiàn)請求對應的 客戶端發(fā)送服務響應消息。
[0146] SSDP服務端可以按照該響應優(yōu)先級列表,依次向各個服務發(fā)現(xiàn)請求對應的客戶端 發(fā)送服務響應消息。示例的,對于響應優(yōu)先級列表:請求2,請求1,SSDP服務端可以先向請 求2對應的客戶端發(fā)送服務響應消息,然后再向請求1對應的客戶端發(fā)送服務響應消息。
[0147] 在步驟308中,客戶端根據(jù)該服務響應消息,向該目標地址信息對應的服務端發(fā) 送服務請求消息。
[0148] 客戶端接收到服務響應消息后,即可根據(jù)該服務響應消息中的目標地址信息,以 單播的形式,向該目標地址信息對應的服務端發(fā)送服務請求消息。示例的,客戶端可以向目 標地址信息:http://192. 168. 31. l:8200/rootDesc. xml發(fā)送服務請求消息。
[0149] 需要說明的是,本公開實施例提供的服務響應方法的步驟的先后順序可以進行適 當調(diào)整,步驟也可以根據(jù)情況進行相應增減,示例的,步驟303可以在步驟304或者步驟306 之后執(zhí)行。任何熟悉本技術領域的技術人員在本公開揭露的技術范圍內(nèi),可輕易想到變化 的方法,都應涵蓋在本公開的保護范圍之內(nèi),因此不再贅述。
[0150] 需要說明的是,在實際應用中,該安裝有客戶端的終端31可以為電視,該安裝有 服務端的終端32可以為路由器,并且該路由器中可以安裝有多個支持SSDP的服務端,例 如MINIDLNA和??ΜΕ MACHINE(中文:時間機器),該路由器的SSDP端口可以由預設的SSDP 服務端占用,在開發(fā)該SSDP服務端時,開發(fā)人員可以將MINIDLNA和??ΜΕ MACHINE的ST、 L0CATI0N、SERVER字段寫入至SSDP服務端的配置文件中。當路由器中的SSDP服務端通過 SSDP端口接收到電視中的客戶端發(fā)送的服務發(fā)現(xiàn)請求后,可以分析該客戶端請求的服務類 型,即分析該服務發(fā)現(xiàn)請求中的ST字段,并將配置文件中與該ST字段相同的ST字段所對 應的LOCATION和SERVER字段返回至該客戶端。之后,電視中的客戶端可以根據(jù)該SSDP服 務端返回的LOCATION,向該LOCATION對應的服務端發(fā)送服務請求消息,該對應的服務端可 以根據(jù)該服務請求消息,以單播的方式向電視中的客戶端提供圖片、音頻和視頻等類型的 數(shù)據(jù)。
[0151] 綜上所述,本公開實施例提供的一種服務響應方法,終端通過SSDP端口接收客戶 端發(fā)送的服務發(fā)現(xiàn)請求后,可以根據(jù)預設的服務類型和服務端的地址信息的對應關系,獲 取該服務發(fā)現(xiàn)請求所請求的服務類型對應的目標地址信息,并向該客戶端發(fā)送服務響應消 息,因此當終端安裝有多個支持SSDP的...