本發(fā)明涉及軟件編譯技術(shù),尤其涉及一種jackserver端口動(dòng)態(tài)匹配的方法和裝置。
背景技術(shù):
優(yōu)般圖(ubuntu)是一種linux操作系統(tǒng),也稱為友幫拓或?yàn)醢鄨D,因其開源特性被廣泛使用。例如,安卓(android)系統(tǒng)手機(jī)也使用ubuntu進(jìn)行程序開發(fā)。
目前,有多個(gè)軟件工程師可能會(huì)同時(shí)在一個(gè)ubuntu服務(wù)器進(jìn)行程序開發(fā),因而需要在ubuntu服務(wù)器上創(chuàng)建多個(gè)用戶。每個(gè)用戶在程序開發(fā)的過程中都會(huì)進(jìn)行程序編譯,例如android7.0以后的版本的android編譯程序需要使用jackserver進(jìn)行程序編譯,而jackserver默認(rèn)一個(gè)端口只能一個(gè)用戶使用。當(dāng)多個(gè)用戶中任意兩個(gè)用戶同時(shí)使用同一個(gè)jackserver端口時(shí),系統(tǒng)會(huì)強(qiáng)制停止在先編譯的用戶的jackservice服務(wù)。
為了解決多個(gè)用戶之間jackserver端口的沖突問題,提出了固定分配用戶的jackserver服務(wù)端口的方法。但是,固定分配的jackserver服務(wù)端口可能會(huì)與系統(tǒng)其他服務(wù)端口發(fā)生沖突,從而迫使用戶終止程序的編譯,影響用戶程序開發(fā)的效率。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種jackserver端口動(dòng)態(tài)匹配的方法和裝置,以實(shí)現(xiàn)多用戶模式下jackserver端口的沖突問題。
本發(fā)明實(shí)施例提供一種jackserver端口動(dòng)態(tài)匹配的方法,包括:
執(zhí)行編譯android項(xiàng)目的啟動(dòng)編譯指令;
判斷jackserver的默認(rèn)端口是否被占用;
若所述默認(rèn)端口未被占用,則使用所述默認(rèn)端口啟動(dòng)jackserver服務(wù);
若所述默認(rèn)端口被占用,則從服務(wù)器的jackserver端口中搜尋空閑端口;
使用所述空閑端口啟動(dòng)jackserver服務(wù)。
可選地,所述判斷jackserver的默認(rèn)端口是否被占用,包括:
執(zhí)行java源碼編譯指令,所述java源碼中包括:判斷jackserver的默認(rèn)端口是否被占用的指令;
根據(jù)執(zhí)行結(jié)果確定jackserver的默認(rèn)端口是否被占用。
可選地,所述jackserver的默認(rèn)端口包括:默認(rèn)服務(wù)端口和默認(rèn)管理端口;
所述空閑端口包括:空閑服務(wù)端口和空閑管理端口。
可選地,所述從服務(wù)器的jackserver端口中搜尋空閑端口,包括:
確定jackserver的默認(rèn)服務(wù)端口的端口號;
判斷服務(wù)器中jackserver端口中端口號為i的服務(wù)端口是否被占用,其中i的取值范圍為:大于所述默認(rèn)服務(wù)端口的端口號且小于等于預(yù)設(shè)的上限服務(wù)端口號;
若端口號為i的服務(wù)端口未被占用,則確定所述端口號為i的服務(wù)端口為空閑服務(wù)端口;
根據(jù)所述空閑服務(wù)端口確定與該空閑服務(wù)端口對應(yīng)的空閑管理端口。
可選地,所述從服務(wù)器的jackserver端口中搜尋空閑端口,包括:
步驟a1:獲取jackserver的默認(rèn)服務(wù)端口的端口號,記為n;
步驟a2:令n加1;
步驟a3:判斷n的值是否小于等于m,若n的值小于等于m,則執(zhí)行步驟a4;若n的值大于m,則返回執(zhí)行步驟a1;其中m為服務(wù)器中jackserver端口的服務(wù)端口的端口號的預(yù)設(shè)上限值;
步驟a4:判斷端口號為n的服務(wù)端口是否被占用;若端口號為n的服務(wù)端口被占用,則返回執(zhí)行步驟a2;若端口號為n的服務(wù)端口未被占用,則執(zhí)行步驟a5;
步驟a5:確定端口號為n的服務(wù)端口和該服務(wù)端口相對應(yīng)的管理端口為所述空閑端口。
本發(fā)明實(shí)施例提供一種jackserver端口動(dòng)態(tài)匹配的裝置,包括:
執(zhí)行模塊,用于執(zhí)行編譯android項(xiàng)目的啟動(dòng)編譯指令;
判斷模塊,用于判斷jackserver的默認(rèn)端口是否被占用;
啟動(dòng)模塊,用于在所述默認(rèn)端口未被占用時(shí),使用所述默認(rèn)端口啟動(dòng)jackserver服務(wù);
搜尋模塊,用于在所述默認(rèn)端口被占用時(shí),從服務(wù)器的jackserver端口中搜尋空閑端口;
啟動(dòng)模塊,還用于使用所述空閑端口啟動(dòng)jackserver服務(wù)。
可選地,所述判斷模塊,具體用于:
執(zhí)行java源碼編譯指令,所述java源碼中包括:判斷jackserver的默認(rèn)端口是否被占用的指令;
根據(jù)執(zhí)行結(jié)果確定jackserver的默認(rèn)端口是否被占用。
可選地,所述jackserver的默認(rèn)端口包括:默認(rèn)服務(wù)端口和默認(rèn)管理端口;
所述空閑端口包括:空閑服務(wù)端口和空閑管理端口。
可選地,所述搜尋模塊,具體用于:
確定jackserver的默認(rèn)服務(wù)端口的端口號;
判斷服務(wù)器中jackserver端口中端口號為i的服務(wù)端口是否被占用,其中i的取值范圍為:大于所述默認(rèn)服務(wù)端口的端口號且小于等于預(yù)設(shè)的上限服務(wù)端口號;
若端口號為i的服務(wù)端口未被占用,則確定所述端口號為i的服務(wù)端口為空閑服務(wù)端口;
根據(jù)所述空閑服務(wù)端口確定與該空閑服務(wù)端口對應(yīng)的空閑管理端口。
可選地,所述搜尋模塊,具體用于:
步驟a1:獲取jackserver的默認(rèn)服務(wù)端口的端口號,記為n;
步驟a2:令n加1;
步驟a3:判斷n的值是否小于等于m,若n的值小于等于m,則執(zhí)行步驟a4;若n的值大于m,則返回執(zhí)行步驟a1;其中m為服務(wù)器中jackserver端口的服務(wù)端口的端口號的預(yù)設(shè)上限值;
步驟a4:判斷端口號為n的服務(wù)端口是否被占用;若端口號為n的服務(wù)端口被占用,則返回執(zhí)行步驟a2;若端口號為n的服務(wù)端口未被占用,則執(zhí)行步驟a5;
步驟a5:確定端口號為n的服務(wù)端口和該服務(wù)端口相對應(yīng)的管理端口為所述空閑端口。
本發(fā)明提供的jackserver端口動(dòng)態(tài)匹配的方法和裝置,通過在啟動(dòng)jackserver服務(wù)之前判斷jackserver的默認(rèn)端口是否被占用,當(dāng)該默認(rèn)端口被占用時(shí),通過搜尋服務(wù)器中jackserver端口中的空閑端口,通過該空閑端口啟動(dòng)jackserver服務(wù)。從而解決了多用戶模式下jackserver端口的沖突問題,使得多個(gè)用戶在同一服務(wù)器下能夠自動(dòng)搜尋到空閑的jackserver端口進(jìn)行程序編譯,提高了開發(fā)效率。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例一提供的jackserver端口動(dòng)態(tài)匹配的方法的流程圖;
圖2為本發(fā)明實(shí)施例二提供的jackserver端口動(dòng)態(tài)匹配的方法的流程圖;
圖3為本發(fā)明實(shí)施例一提供的jackserver端口動(dòng)態(tài)匹配的裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1為本發(fā)明實(shí)施例一提供的jackserver端口動(dòng)態(tài)匹配的方法的流程圖,如圖1所示,本實(shí)施例的方法可以包括:
s101、執(zhí)行編譯android項(xiàng)目的啟動(dòng)編譯指令。
本實(shí)施例中,執(zhí)行編譯android項(xiàng)目的啟動(dòng)編譯指令,具體為:運(yùn)行源碼,android項(xiàng)目的源碼中以字符串make、mm或mmm開頭的指令即為編譯指令,例如:make-j10;mmsettings-j10;mmmpackages/apps/settings-j10;makesystemimage-j10等指令。
s102、判斷jackserver的默認(rèn)端口是否被占用。
本實(shí)施例中,在服務(wù)器中,會(huì)存在多個(gè)用戶,用戶在每執(zhí)行一次java源碼編譯時(shí)均需要調(diào)動(dòng)服務(wù)器的jackserver端口,這會(huì)導(dǎo)致用戶調(diào)用jackserver端口沖突的問題。因此,在調(diào)用jackserver端口之前,需要判斷jackserver的默認(rèn)端口是否被占用。若默認(rèn)端口未被占用則執(zhí)行步驟s103;若默認(rèn)端口被占用,則執(zhí)行步驟s104。
可選地,判斷jackserver的默認(rèn)端口是否被占用,具體為:執(zhí)行java源碼編譯指令,java源碼中包括:判斷jackserver的默認(rèn)端口是否被占用的指令;根據(jù)執(zhí)行結(jié)果確定jackserver的默認(rèn)端口是否被占用。其中,jackserver的默認(rèn)端口包括:默認(rèn)服務(wù)端口和默認(rèn)管理端口。
s103、使用默認(rèn)端口啟動(dòng)jackserver服務(wù)。
本實(shí)施例中,當(dāng)確定jackserver的默認(rèn)端口未被占用時(shí),通過默認(rèn)端口啟動(dòng)jackserver服務(wù),完成對android項(xiàng)目的一次編譯。
s104、從服務(wù)器的jackserver端口中搜尋空閑端口。
本實(shí)施例中,一個(gè)服務(wù)器上可以設(shè)置多個(gè)jackserver端口(具體設(shè)置的jackserver端口數(shù)由服務(wù)器的硬件配置決定)。當(dāng)jackserver的默認(rèn)端口被占用時(shí),為了避免端口沖突,需要從除默認(rèn)端口以外的jackserver端口中搜尋空閑端口。其中,空閑端口包括:空閑服務(wù)端口和空閑管理端口。
可選地,可以在除默認(rèn)端口以外的jackserver端口中隨機(jī)選取一個(gè)jackserver端口進(jìn)行判斷,判斷該jackserver端口是否被占用。
可選地,也可以按照一定的順序從jackserver的端口中確定空閑端口,例如:首先,確定jackserver的默認(rèn)服務(wù)端口的端口號,然后判斷服務(wù)器中jackserver端口中端口號為i的服務(wù)端口是否被占用,其中,i的取值范圍為:大于默認(rèn)服務(wù)端口的端口號且小于等于預(yù)設(shè)的上限服務(wù)端口號;若端口號為i的服務(wù)端口未被占用,則確定端口號為i的服務(wù)端口為空閑服務(wù)端口;根據(jù)空閑服務(wù)端口確定與該空閑服務(wù)端口對應(yīng)的空閑管理端口。
s105、使用空閑端口啟動(dòng)jackserver服務(wù)。
本實(shí)施例中,通過搜尋到的空閑端口啟動(dòng)jackserver服務(wù),需要說明的是,當(dāng)jackserver端口中的服務(wù)端口被確定后,與該服務(wù)端口相匹配的管理端口也被確定。從而可以調(diào)用該服務(wù)端口和該管理端口啟動(dòng)jackserver服務(wù)。
可選地,jackserver端口中的服務(wù)端口與管理端口為關(guān)聯(lián)關(guān)系,即其中任意一個(gè)確定則另一個(gè)也可以確定時(shí),也可以通過上述類似的方法,先搜尋管理端口的端口號,確定空閑管理端口,通過該空閑管理端口來確定空閑服務(wù)端口。
本實(shí)施例,通過在啟動(dòng)jackserver服務(wù)之前判斷jackserver的默認(rèn)端口是否被占用,當(dāng)該默認(rèn)端口被占用時(shí),通過搜尋服務(wù)器中jackserver端口中的空閑端口,通過該空閑端口啟動(dòng)jackserver服務(wù)。從而解決了多用戶模式下jackserver端口的沖突問題,使得多個(gè)用戶在同一服務(wù)器下能夠自動(dòng)搜尋到空閑的jackserver端口進(jìn)行程序編譯,提高了開發(fā)效率。
圖2為本發(fā)明實(shí)施例二提供的jackserver端口動(dòng)態(tài)匹配的方法的流程圖,如圖2所示的方法在圖1所示方法的基礎(chǔ)上可以包括:
s201、執(zhí)行編譯android項(xiàng)目的啟動(dòng)編譯指令。
s202、判斷jackserver的默認(rèn)端口是否被占用;若默認(rèn)端口未被占用則執(zhí)行步驟s203;若默認(rèn)端口被占用,則執(zhí)行步驟s204。
s203、使用默認(rèn)端口啟動(dòng)jackserver服務(wù)。
本實(shí)施例中步驟s201-s203的具體是實(shí)現(xiàn)過程參見圖1所示方法中的相關(guān)描述,此處不再贅述。
s204、確定jackserver的默認(rèn)服務(wù)端口的端口號,記為n。
本實(shí)施例中,首先標(biāo)記jackserver的默認(rèn)服務(wù)端口的端口號為n,用于確定初始搜尋的端口號,例如本實(shí)施例中采用默認(rèn)服務(wù)端口的端口號加1時(shí)的端口號為初始搜尋的端口。
s205、令n加1。
本實(shí)施例中,通過對n的加1操作,依次逐個(gè)搜尋判斷服務(wù)端口是否為空閑端口。例如:假設(shè)默認(rèn)服務(wù)端口的端口號為8072,則從端口號為8073的端口進(jìn)行判斷,判斷端口號為8073的服務(wù)端口是否為空閑端口。
s206、判斷n的值是否小于等于m。
其中m為服務(wù)器中jackserver端口的服務(wù)端口的端口號的預(yù)設(shè)上限值,若n的值小于等于m,則執(zhí)行步驟s207;若n的值大于m,則返回執(zhí)行步驟s204。
本實(shí)施例中,確定端口號的上限值m,理論上服務(wù)器的端口數(shù)量是有限的,當(dāng)搜尋的端口號小于等于m時(shí),可以繼續(xù)令n的值加1,判斷加1后的n所對應(yīng)的服務(wù)端口是否為空閑服務(wù)端口。當(dāng)n的值等于m時(shí),判斷端口號為m的服務(wù)端口是否被占用。
s207、判斷端口號為n的服務(wù)端口是否被占用,若端口號為n的服務(wù)端口被占用,則返回執(zhí)行步驟s205;若端口號為n的服務(wù)端口未被占用,則執(zhí)行步驟s208。
本實(shí)施例中,可以執(zhí)行java源碼編譯指令,java源碼中包括:判斷端口號為n所對應(yīng)的服務(wù)端口是否被占用的指令;根據(jù)執(zhí)行結(jié)果確定該服務(wù)端口是否被占用。
s208、確定端口號為n的服務(wù)端口和該服務(wù)端口相對應(yīng)的管理端口為空閑端口。
s209、使用空閑端口啟動(dòng)jackserver服務(wù)。
本實(shí)施例中步驟s208-s209的具體是實(shí)現(xiàn)過程參見圖1所示方法中的相關(guān)描述,此處不再贅述。
本實(shí)施例,通過在啟動(dòng)jackserver服務(wù)之前判斷jackserver的默認(rèn)端口是否被占用,當(dāng)該默認(rèn)端口被占用時(shí),通過從默認(rèn)端口的端口自增1所對應(yīng)的服務(wù)端口開始搜尋服務(wù)器中jackserver端口中的空閑端口,通過該空閑端口啟動(dòng)jackserver服務(wù)。從而解決了多用戶模式下jackserver端口的沖突問題,使得多個(gè)用戶在同一服務(wù)器下能夠自動(dòng)搜尋到空閑的jackserver端口進(jìn)行程序編譯,提高了開發(fā)效率。
圖3為本發(fā)明實(shí)施例一提供的jackserver端口動(dòng)態(tài)匹配的裝置的結(jié)構(gòu)示意圖,本實(shí)施例中的裝置可以包括:執(zhí)行模塊10,用于執(zhí)行編譯android項(xiàng)目的啟動(dòng)編譯指令;判斷模塊20,用于判斷jackserver的默認(rèn)端口是否被占用;啟動(dòng)模塊,用于在默認(rèn)端口未被占用時(shí),使用默認(rèn)端口啟動(dòng)jackserver服務(wù);搜尋模塊40,用于在默認(rèn)端口被占用時(shí),從服務(wù)器的jackserver端口中搜尋空閑端口;啟動(dòng)模塊30,還用于使用空閑端口啟動(dòng)jackserver服務(wù)。
可選地,判斷模塊20,具體用于:執(zhí)行java源碼編譯指令,java源碼中包括:判斷jackserver的默認(rèn)端口是否被占用的指令;根據(jù)執(zhí)行結(jié)果確定jackserver的默認(rèn)端口是否被占用。
可選地,jackserver的默認(rèn)端口包括:默認(rèn)服務(wù)端口和默認(rèn)管理端口;空閑端口包括:空閑服務(wù)端口和空閑管理端口。
可選地,搜尋模塊40,具體用于:確定jackserver的默認(rèn)服務(wù)端口的端口號;判斷服務(wù)器中jackserver端口中端口號為i的服務(wù)端口是否被占用,其中i的取值范圍為:大于默認(rèn)服務(wù)端口的端口號且小于等于預(yù)設(shè)的上限服務(wù)端口號。若端口號為i的服務(wù)端口未被占用,則確定端口號為i的服務(wù)端口為空閑服務(wù)端口。根據(jù)空閑服務(wù)端口確定與該空閑服務(wù)端口對應(yīng)的空閑管理端口。
可選地,搜尋模塊40,具體用于執(zhí)行如下步驟:
步驟a1:獲取jackserver的默認(rèn)服務(wù)端口的端口號,記為n。
步驟a2:令n加1。
步驟a3:判斷n的值是否小于等于m,若n的值小于等于m,則執(zhí)行步驟a4;若n的值大于m,則返回執(zhí)行步驟a1;其中m為服務(wù)器中jackserver端口的服務(wù)端口的端口號的預(yù)設(shè)上限值。
步驟a4:判斷端口號為n的服務(wù)端口是否被占用;若端口號為n的服務(wù)端口被占用,則返回執(zhí)行步驟a2;若端口號為n的服務(wù)端口未被占用,則執(zhí)行步驟a5。
步驟a5:確定端口號為n的服務(wù)端口和該服務(wù)端口相對應(yīng)的管理端口為空閑端口。
本實(shí)施中的裝置可以執(zhí)行圖1、圖2所示的方法,其實(shí)現(xiàn)過程和技術(shù)效果類似,此處不再贅述。
此外,本申請實(shí)施例還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有計(jì)算機(jī)執(zhí)行指令,當(dāng)用戶設(shè)備的至少一個(gè)處理器執(zhí)行該計(jì)算機(jī)執(zhí)行指令時(shí),用戶設(shè)備執(zhí)行上述各種可能的方法。
其中,計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì),其中通信介質(zhì)包括便于從一個(gè)地方向另一個(gè)地方傳送計(jì)算機(jī)程序的任何介質(zhì)。存儲(chǔ)介質(zhì)可以是通用或?qū)S糜?jì)算機(jī)能夠存取的任何可用介質(zhì)。一種示例性的存儲(chǔ)介質(zhì)耦合至處理器,從而使處理器能夠從該存儲(chǔ)介質(zhì)讀取信息,且可向該存儲(chǔ)介質(zhì)寫入信息。當(dāng)然,存儲(chǔ)介質(zhì)也可以是處理器的組成部分。處理器和存儲(chǔ)介質(zhì)可以位于asic中。另外,該asic可以位于用戶設(shè)備中。當(dāng)然,處理器和存儲(chǔ)介質(zhì)也可以作為分立組件存在于通信設(shè)備中。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。