本發(fā)明屬于通信
技術(shù)領(lǐng)域:
,尤其涉及一種wifi共享的方法及系統(tǒng)。
背景技術(shù):
:隨著電子產(chǎn)品的不斷發(fā)展,智能終端(比如手機(jī)、平板電腦等)基本上已經(jīng)成為人手必備的電子產(chǎn)品。隨著智能終端的普及,使用者對(duì)網(wǎng)絡(luò)的依賴越來(lái)越大,比如,使用聊天軟件、看直播軟件中的視頻等。但是智能終端自帶移動(dòng)流量有限,不能長(zhǎng)時(shí)間的觀看視頻。而使用者又無(wú)法根據(jù)當(dāng)前所處的位置信息隨時(shí)找到免費(fèi)的wifi來(lái)觀看視頻,導(dǎo)致用戶體驗(yàn)度下降且使用成本增加。技術(shù)實(shí)現(xiàn)要素:針對(duì)現(xiàn)有技術(shù)存在的問(wèn)題,本發(fā)明實(shí)施例提供了一種wifi共享的方法及系統(tǒng),以解決現(xiàn)有技術(shù)中用戶無(wú)法隨時(shí)根據(jù)當(dāng)前的位置信息連接到免費(fèi)wifi來(lái)使用智能終端的視頻軟件,導(dǎo)致用戶體驗(yàn)度下降且使用成本增加的技術(shù)問(wèn)題。本發(fā)明提供一種wifi共享的方法,所述方法包括:服務(wù)器接收客戶端發(fā)送的第一請(qǐng)求信息,根據(jù)所述第一請(qǐng)求信息查找所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息,并將查詢到的可用wifi的ID返回至所述客戶端;服務(wù)器接收所述客戶端發(fā)送的第二請(qǐng)求信息,根據(jù)所述第二請(qǐng)求信息向所述客戶端發(fā)送wifi名稱和密碼,所述客戶端基于所述wifi的名稱和密碼連接所述wifi;其中,所述第一請(qǐng)求信息中包括:所述客戶端當(dāng)前位置信息;所述第二請(qǐng)求信息中包括:所述客戶端基于可用wifi的ID掃描所述可用wifi信息后獲取的一wifi的名稱及對(duì)應(yīng)的ID。上述方案中,服務(wù)器接收客戶端發(fā)送的第一請(qǐng)求信息之前,所述方法還包括:所述服務(wù)器確定數(shù)據(jù)庫(kù)表名及數(shù)值類型,基于所述數(shù)據(jù)庫(kù)表名及所述數(shù)值類型構(gòu)建數(shù)據(jù)庫(kù)的表;將N個(gè)客戶端上傳的wifi信息儲(chǔ)存至所述數(shù)據(jù)庫(kù)的表中;其中,所述wifi信息包括:客戶端ID、wifi名稱、wifi密碼及客戶端當(dāng)前所在的位置信息。上述方案中,所述根據(jù)所述第一請(qǐng)求信息查找所述客戶端當(dāng)前位置所屬查找區(qū)域的wifi信息具體包括:所述服務(wù)器根據(jù)所述客戶端當(dāng)前位置中的經(jīng)度值和緯度值計(jì)算所述客戶端的當(dāng)前坐標(biāo);以所述當(dāng)前坐標(biāo)為基準(zhǔn)點(diǎn),按照預(yù)設(shè)的查找距離定義出四個(gè)范圍點(diǎn),形成一查找區(qū)域;根據(jù)所述第一請(qǐng)求信息在所述查找區(qū)域內(nèi)查找可用wifi信息。本發(fā)明還提供一種wifi共享的方法,所述方法包括:客戶端發(fā)送第一請(qǐng)求信息,以使服務(wù)器基于所述第一請(qǐng)求信息查找所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息,并將查詢到的可用wifi的ID返回至所述客戶端;所述客戶端根據(jù)所述可用wifi的ID掃描所述可用wifi信息后,獲取一wifi的名稱及對(duì)應(yīng)的ID,并將所述wifi的名稱及對(duì)應(yīng)的ID封裝至第二請(qǐng)求信息中,將所述第二請(qǐng)求信息發(fā)送至所述服務(wù)器,以使所述服務(wù)器基于所述第二請(qǐng)求信息向所述客戶端發(fā)送wifi名稱和密碼;所述客戶端基于所述wifi的名稱和密碼連接所述wifi;其中,所述第一請(qǐng)求信息中包括:所述客戶端當(dāng)前位置信息。上述方案中,當(dāng)所述客戶端基于所述wifi名稱和密碼連接所述wifi后,所述方法還包括:所述客戶端生成連接標(biāo)記以記錄當(dāng)前的連接狀態(tài);當(dāng)退出應(yīng)用時(shí),查詢所述連接標(biāo)記是否還存在wifi連接,當(dāng)確定還存在wifi連接時(shí),斷開(kāi)當(dāng)前連接。本發(fā)明提供一種服務(wù)器,所述服務(wù)器包括:接收單元,用于接收客戶端發(fā)送的第一請(qǐng)求信息及第二請(qǐng)求信息;查詢單元,用于根據(jù)所述第一請(qǐng)求信息查找所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息,并將查詢到的可用所述wifi的ID返回至所述客戶端;發(fā)送單元,用于根據(jù)所述第二請(qǐng)求信息向所述客戶端發(fā)送wifi的名稱和密碼,所述客戶端基于所述wifi的名稱和密碼連接所述wifi;其中,所述第一請(qǐng)求信息中包括:所述客戶端當(dāng)前位置信息;所述第二請(qǐng)求信息中包括:所述客戶端基于所述可用wifi的ID掃描所述可用wifi信息后獲取的一wifi的名稱及對(duì)應(yīng)的ID。上述方案中,所述服務(wù)器還包括構(gòu)建單元及儲(chǔ)存單元:在所述接收單元接收客戶端發(fā)送的第一請(qǐng)求信息之前,所述構(gòu)建單元用于:基于所述數(shù)據(jù)庫(kù)表名及所述數(shù)值類型構(gòu)建數(shù)據(jù)庫(kù)的表;所述儲(chǔ)存單元用于:將N個(gè)客戶端上傳的wifi信息儲(chǔ)存至所述數(shù)據(jù)庫(kù)的表中,所述wifi信息包括:客戶端ID、wifi名稱、wifi密碼及客戶端當(dāng)前所在的位置信息。上述方案中,所述查找單元根據(jù)所述第一請(qǐng)求信息查找所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息具體包括:根據(jù)所述客戶端當(dāng)前位置中的經(jīng)度值和緯度值計(jì)算所述客戶端的當(dāng)前坐標(biāo);以所述當(dāng)前坐標(biāo)為基準(zhǔn)點(diǎn),按照預(yù)設(shè)的查找距離定義出四個(gè)范圍點(diǎn),形成一查找區(qū)域;根據(jù)所述第一請(qǐng)求信息在所述查找區(qū)域內(nèi)查找可用wifi信息。本發(fā)明提供一種wifi共享的系統(tǒng),所述系統(tǒng)包括:客戶端,用于向服務(wù)器發(fā)送第一請(qǐng)求信息;所述服務(wù)器,用于基于發(fā)送的第一請(qǐng)求信息查找所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息,并將查詢到的可用wifi的ID返回至所述客戶端;所述客戶端,用于基于所述可用wifi的ID掃描所述可用wifi信息后,獲取一wifi的名稱及對(duì)應(yīng)的ID,并將所述wifi的名稱及對(duì)應(yīng)的ID封裝至第二請(qǐng)求信息中,將所述第二請(qǐng)求信息發(fā)送至所述服務(wù)器;所述服務(wù)器,用于基于所述第二請(qǐng)求信息向所述客戶端發(fā)送wifi的名稱和密碼;所述客戶端,用于基于所述wifi的名稱和密碼連接所述wifi;其中,所述第一請(qǐng)求信息中包括:所述客戶端當(dāng)前位置信息。上述方案中,當(dāng)所述客戶端基于所述wifi名稱和密碼連接所述wifi后,所述客戶端還用于:生成連接標(biāo)記以記錄當(dāng)前的連接狀態(tài);當(dāng)退出應(yīng)用時(shí),查詢所述連接標(biāo)記是否還存在wifi連接,當(dāng)確定還存在wifi連接時(shí),斷開(kāi)當(dāng)前連接。本發(fā)明提供了一種wifi共享的方法及系統(tǒng),所述方法包括:服務(wù)器接收客戶端發(fā)送的第一請(qǐng)求信息,根據(jù)所述第一請(qǐng)求信息在數(shù)據(jù)庫(kù)中查找所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息,并將查詢到的可用wifi的ID返回至所述客戶端;所述第一請(qǐng)求信息中包括:所述客戶端當(dāng)前位置信息;這樣,無(wú)論用戶處于何地,只要通過(guò)客戶端發(fā)送當(dāng)前位置信息后,即可接收到服務(wù)器返回的可用wifi的ID;客戶端接收到可用wifi的ID后,可以基于可用wifi的ID掃描所述可用wifi信息后獲取一wifi的名稱及對(duì)應(yīng)的ID,并將該wifi的名稱及對(duì)應(yīng)的ID封裝至第二請(qǐng)求信息中,將第二請(qǐng)求信息發(fā)送至服務(wù)器;服務(wù)器接收到所述客戶端發(fā)送的第二請(qǐng)求信息后,可以基于wifi名稱及對(duì)應(yīng)的ID,將對(duì)應(yīng)的wifi名稱和密碼發(fā)送至客戶端,那么所述客戶端就可以基于所述wifi名稱和密碼連接所述wifi;這樣,用戶就可以根據(jù)當(dāng)前位置信息能隨時(shí)隨地地連接到免費(fèi)wifi,提高了體驗(yàn)度且降低了使用成本。附圖說(shuō)明圖1為本發(fā)明實(shí)施例提供的wifi共享的系統(tǒng)結(jié)構(gòu)示意圖;圖2為本發(fā)明實(shí)施例提供的wifi共享的方法流程示意圖;圖3為本發(fā)明實(shí)施例提供的wifi共享的方法又一流程示意圖;圖4為為本發(fā)明實(shí)施例提供的wifi共享的方法的信號(hào)交互示意圖;圖5為本發(fā)明實(shí)施例提供的服務(wù)器的結(jié)構(gòu)示意圖。具體實(shí)施方式為了避免用戶不能隨時(shí)連接到免費(fèi)wifi來(lái)使用智能終端的視頻軟件,導(dǎo)致用戶體驗(yàn)度下降且使用成本增加的技術(shù)問(wèn)題,本發(fā)明提供了一種wifi共享的方法,其特征在于,所述方法包括:服務(wù)器接收客戶端發(fā)送的第一請(qǐng)求信息,根據(jù)所述第一請(qǐng)求信息查找所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息,并將查詢到的可用wifi的ID返回至所述客戶端;服務(wù)器接收所述客戶端發(fā)送的第二請(qǐng)求信息,根據(jù)所述第二請(qǐng)求信息向所述客戶端發(fā)送wifi的名稱和密碼,所述客戶端基于所述wifi的名稱和密碼連接所述wifi;其中,所述第一請(qǐng)求信息中包括:所述客戶端當(dāng)前位置信息;所述第二請(qǐng)求信息中包括:所述客戶端基于可用wifi的ID掃描所述可用wifi信息后獲取的一wifi的名稱及對(duì)應(yīng)的ID。下面通過(guò)附圖及具體實(shí)施例對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)說(shuō)明。實(shí)施例一在介紹本發(fā)明的方法實(shí)施例之前,先介紹本發(fā)明實(shí)施例中wifi共享的系統(tǒng)架構(gòu),如圖1所示,該系統(tǒng)包括:客戶端101和服務(wù)器102。服務(wù)器102如圖1所示,可與N個(gè)客戶端101實(shí)現(xiàn)通信連接,N為自然數(shù),其中,客戶端101、服務(wù)器102之間的通信方式可以是有線通信,也可以是無(wú)線通信,所述客戶端101具體可以是智能手機(jī),也可以是平板電腦,還可以是智能穿戴設(shè)備等等,本申請(qǐng)對(duì)此不作限定。本實(shí)施例提供一種wifi共享的方法,該方法應(yīng)用于服務(wù)器側(cè),如圖2所示,該方法包括:S201,服務(wù)器接收客戶端發(fā)送的第一請(qǐng)求信息,根據(jù)所述第一請(qǐng)求信息查找所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息,并將查詢到的可用wifi的ID返回至所述客戶端。本步驟中,服務(wù)器接收客戶端發(fā)送的第一請(qǐng)求信息之前,還用于將N個(gè)客戶端上傳的wifi信息儲(chǔ)存至預(yù)先建立的數(shù)據(jù)庫(kù)的表中,這里,服務(wù)器是通過(guò)確定數(shù)據(jù)庫(kù)表名及數(shù)值類型,基于所述數(shù)據(jù)庫(kù)表名及所述數(shù)值類型構(gòu)建數(shù)據(jù)庫(kù)的表。所述數(shù)據(jù)庫(kù)可以為mysql數(shù)據(jù)庫(kù);所述wifi信息包括:客戶端ID、wifi名稱、wifi密碼及客戶端當(dāng)前所在的位置信息。這里,所述客戶端ID是用于識(shí)別客戶端所屬用戶身份的唯一標(biāo)識(shí),可以是用戶名稱,也可以是用戶編號(hào)之類的,本發(fā)明中是以移動(dòng)設(shè)備國(guó)際身份碼(IMEI,InternationalMobileEquipmentIdentity)為客戶端ID。所述wifi的ID是指wifi的媒體訪問(wèn)控制(MAC,MediaAccessControl)地址;所述客戶端當(dāng)前所在的位置信息包括:位置經(jīng)度及位置緯度。這里,客戶端上傳wifi的具體過(guò)程為:當(dāng)客戶端在某個(gè)地方已經(jīng)連接上wifi信息時(shí),利用Android中java命令:Runtime.getRuntime().exec()來(lái)執(zhí)行cat/data/misc/wifi/*.conf\n,去模擬命令行來(lái)得到具體的wifi信息;在得到該wifi信息后,通過(guò)GPS自動(dòng)獲取當(dāng)前位置信息,在獲取到當(dāng)前位置的經(jīng)緯度坐標(biāo)后,連同wifi信息及客戶端ID一起上傳至服務(wù)器中。當(dāng)用戶通過(guò)客戶端上傳完wifi信息并儲(chǔ)存成功后,服務(wù)器會(huì)向客戶端返回儲(chǔ)存成功的信息提示,用戶可以根據(jù)該信息提示執(zhí)行相應(yīng)的操作,比如,根據(jù)該信息提示執(zhí)行相應(yīng)獎(jiǎng)勵(lì)申請(qǐng)請(qǐng)求,那么服務(wù)器就會(huì)根據(jù)該請(qǐng)求查詢對(duì)應(yīng)的客戶端ID,為用戶發(fā)送相應(yīng)的獎(jiǎng)勵(lì)。這里,所述數(shù)據(jù)庫(kù)的表結(jié)構(gòu)如表1所示:表1這里,由于數(shù)據(jù)庫(kù)將客戶端ID設(shè)置為自增長(zhǎng)模式,因此,數(shù)據(jù)庫(kù)中每增加一個(gè)wifi信息時(shí),就給客戶端ID自動(dòng)匹配一個(gè)序號(hào)。當(dāng)用戶想通過(guò)客戶端尋找免費(fèi)的wifi時(shí),先通過(guò)客戶端向服務(wù)器發(fā)送第一請(qǐng)求信息。所述第一請(qǐng)求信息中包括:客戶端當(dāng)前的位置信息,所述位置信息是由客戶端通過(guò)GPS數(shù)據(jù)及基站數(shù)據(jù)來(lái)確定的得到經(jīng)度坐標(biāo)及緯度坐標(biāo)。這里,在客戶端向服務(wù)器發(fā)送第一請(qǐng)求信息之前,還需判斷是否連連接上移動(dòng)網(wǎng)絡(luò),如果確定連接上移動(dòng)網(wǎng)絡(luò),則會(huì)允許執(zhí)行向服務(wù)器發(fā)送第一請(qǐng)求信息;如果沒(méi)有連接上任何網(wǎng)絡(luò),則提示是否開(kāi)啟wifi或移動(dòng)網(wǎng)絡(luò)。并且,如果已經(jīng)連接上wifi,則可以提示用戶執(zhí)行將wifi信息上傳至服務(wù)器的操作。當(dāng)服務(wù)器接收到第一請(qǐng)求信息后,根據(jù)所述第一請(qǐng)求信息查找所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息,并將查詢到的可用wifi的ID返回至所述客戶端。其中,所述第一請(qǐng)求信息中包括:所述客戶端當(dāng)前位置信息。具體地,所述服務(wù)器接收到第一請(qǐng)求信息后,將第一請(qǐng)求信息中的經(jīng)度用$lng賦值,將緯度用$lat賦值;利用代碼$dlng=2*asin(sin($distance/(2*EARTH_RADIUS)))/cos(deg2rad($lat));將經(jīng)度轉(zhuǎn)為經(jīng)度坐標(biāo);再利用代碼$dlng=rad2deg($dlng);將經(jīng)度坐標(biāo)轉(zhuǎn)為經(jīng)度值。同樣的,利用代碼$dlat=$distance/EARTH_RADIUS;將緯度轉(zhuǎn)化為緯度坐標(biāo);再利用代碼$dlat=rad2deg($dlat);將緯度坐標(biāo)轉(zhuǎn)化為緯度值。其中,EARTH_RADIUS常量,該常量是地球的半徑,平均值為6371000米,Distance為所需要得到客戶端周圍點(diǎn)的半徑,這里我們將該值設(shè)置為100m,以能確保wifi信號(hào)的強(qiáng)度。當(dāng)經(jīng)度值和緯度值都確定之后,基于所述經(jīng)度值及所述緯度值確定客戶端的當(dāng)前坐標(biāo),以所述當(dāng)前坐標(biāo)為基準(zhǔn)點(diǎn),按照預(yù)設(shè)的查找距離定義出四個(gè)范圍點(diǎn),形成一查找區(qū)域。其中,每個(gè)范圍點(diǎn)都為一個(gè)數(shù)組,分別為當(dāng)前坐標(biāo)的左上點(diǎn)left-top、當(dāng)前坐標(biāo)的右上點(diǎn)right-top、當(dāng)前坐標(biāo)的左下點(diǎn)left-bottom及當(dāng)前坐標(biāo)的右下點(diǎn)rightt-bottom;這四個(gè)點(diǎn)形成一查找區(qū)域,所述查找區(qū)域的形狀為方形,邊長(zhǎng)為100mm。具體地,可以利用以下代碼來(lái)分別確定四個(gè)范圍點(diǎn):left-top:[lat+dlat,lng–dlng]//左上點(diǎn)right-top:[lat+dlat,lng+dlng]//右上點(diǎn)left-bottom:[lat–dlat,lng–dlng]//左下點(diǎn)right-bottom:[lat–dlat,lng+dlng]//右下點(diǎn)當(dāng)服務(wù)器將查找區(qū)域確定好之后,使用sql語(yǔ)句來(lái)查詢?cè)搮^(qū)域中是否有存在可用的wifi信息,其查詢語(yǔ)句如下:select*from表名whereLocation_lat<=left-top[0]andLocation_lat<=right-top[0]andLocation_lat>=left-bottom[0]andLocation_lat>=right-bottom[0]andLocaton_lng<=left-top[1]andLocaton_lng<=right-top[1]andLocation_lng>=left-bottom[1]andLocation_lng>=right-bottom[1];使用上述語(yǔ)句即可查詢到該查詢范圍內(nèi)是否有可用wifi信息存在,如確定有可用wifi存在,則將查詢到的可用wifi的ID以字符串編碼的形式返回至所述客戶端。這里,為了防止服務(wù)器在提供wifi的信息時(shí)遭到泄露,所以將wifi的ID以字符串編碼的形式返回。S202,服務(wù)器接收所述客戶端發(fā)送的第二請(qǐng)求信息,根據(jù)所述第二請(qǐng)求信息向所述客戶端發(fā)送wifi名稱和密碼,所述客戶端基于所述wifi名稱和密碼連接所述wifi。本步驟中,客戶端接收到可用wifi的ID后,利用wifiManager中的startScan();來(lái)掃描可用的wifi信息,其中,掃描的間隔定義為200毫秒執(zhí)行一次,當(dāng)掃描超過(guò)30秒則自動(dòng)關(guān)閉掃描功能。當(dāng)掃描出wifi信息后,并將該信息通過(guò)廣播發(fā)送出,利用所述信息獲取wifi的名稱及對(duì)應(yīng)的ID。并將所述wifi的名稱、對(duì)應(yīng)的ID及將wifi的ID字符串編碼封裝至第二請(qǐng)求信息中,將第二請(qǐng)求信息發(fā)送至服務(wù)器。當(dāng)服務(wù)器接收到第二請(qǐng)求信息后,首先將返回的wifi的ID組合字符串編碼進(jìn)行拆分,拆分后,根據(jù)第二請(qǐng)求信息中的wifi名稱,查詢數(shù)據(jù)庫(kù)中該ID字段內(nèi)是否有相應(yīng)wifi名稱與之匹配,有則將wifi名稱與密碼一并返回至客戶端,沒(méi)有則返回空,提示客戶端沒(méi)有查詢到該范圍內(nèi)的wifi,那么客戶端則繼續(xù)掃描可用的wifi信息。當(dāng)所述客戶端接收到wifi名稱和密碼后,利用wifi名稱和密碼連接所述wifi,具體可以通過(guò)如下代碼實(shí)現(xiàn):WifiConfigurationwifiConfig=createWifiInfo(ssid,password,type);在該代碼中,ssid為wifi的名稱,password為wifi的密碼,type為連接狀態(tài),作為可選的實(shí)施例:當(dāng)客戶端連接上所述wifi后,所述方法還包括:生成連接標(biāo)記以記錄當(dāng)前的連接狀態(tài);當(dāng)退出應(yīng)用時(shí),查詢所述連接標(biāo)記是否還存在wifi連接,當(dāng)確定還存在wifi連接時(shí),斷開(kāi)當(dāng)前連接。當(dāng)斷開(kāi)當(dāng)前連接后,當(dāng)客戶端再次位于該區(qū)域范圍內(nèi)時(shí),即使搜索到該wifi信息,也不會(huì)自動(dòng)連接,只有再次發(fā)送請(qǐng)求才會(huì)連接,這樣不但就確保了wifi信號(hào)的強(qiáng)度,也確保了wifi信息的安全性。這里,當(dāng)客戶端再次位于該區(qū)域范圍內(nèi)時(shí),即使搜索到該wifi信息,也不會(huì)自動(dòng)連接的具體實(shí)現(xiàn)方式為:將type填寫成WifiCipherType.WIFICIPHER_WPA。以上是基于服務(wù)器側(cè)wifi共享的方法的具體實(shí)施過(guò)程。實(shí)施例二本發(fā)明還提供一種wifi共享的方法,該方法應(yīng)用在客戶端側(cè),該方法包括:S301,客戶端發(fā)送第一請(qǐng)求信息,以使服務(wù)器基于所述第一請(qǐng)求信息查找所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息,并將查詢到的可用wifi的ID返回至所述客戶端。本步驟中,服務(wù)服務(wù)器接收客戶端發(fā)送的第一請(qǐng)求信息之前,還用于將N個(gè)客戶端上傳的wifi信息儲(chǔ)存至預(yù)先建立的數(shù)據(jù)庫(kù)的表中,這里,服務(wù)器是通過(guò)確定數(shù)據(jù)庫(kù)表名及數(shù)值類型,基于所述數(shù)據(jù)庫(kù)表名及所述數(shù)值類型構(gòu)建數(shù)據(jù)庫(kù)的表。所述數(shù)據(jù)庫(kù)可以為mysql數(shù)據(jù)庫(kù);所述wifi信息包括:客戶端ID、wifi名稱、wifi密碼及客戶端當(dāng)前所在的位置信息。這里,所述客戶端ID是用于識(shí)別客戶端所屬用戶身份的唯一標(biāo)識(shí),可以是用戶名稱,也可以是用戶編號(hào)之類的,本發(fā)明中是以移動(dòng)設(shè)備國(guó)際身份碼IMEI為客戶端ID。所述wifi的ID是指wifi的MAC地址;所述客戶端當(dāng)前所在的位置信息包括:位置經(jīng)度及位置緯度。具體地,客戶端上傳wifi的具體過(guò)程為:當(dāng)客戶端在某個(gè)地方已經(jīng)連接上wifi信息時(shí),利用Android中java命令:Runtime.getRuntime().exec()來(lái)執(zhí)行cat/data/misc/wifi/*.conf\n,去模擬命令行來(lái)得到具體的wifi信息;在得到該wifi信息后,通過(guò)GPS自動(dòng)獲取當(dāng)前位置信息,在獲取到當(dāng)前位置的經(jīng)緯度坐標(biāo)后,連同wifi信息及客戶端ID一起上傳至服務(wù)器中。當(dāng)用戶通過(guò)客戶端上傳完wifi信息并儲(chǔ)存成功后,服務(wù)器會(huì)向客戶端返回儲(chǔ)存成功的信息提示,用戶可以根據(jù)該信息提示執(zhí)行相應(yīng)的操作,比如,根據(jù)該信息提示執(zhí)行相應(yīng)獎(jiǎng)勵(lì)申請(qǐng)請(qǐng)求,那么服務(wù)器就會(huì)根據(jù)該請(qǐng)求查詢向?qū)?yīng)的客戶端ID,為用戶發(fā)送相應(yīng)的獎(jiǎng)勵(lì)。這里,所述數(shù)據(jù)庫(kù)的表結(jié)構(gòu)如表1所示:表1表名類型描述默認(rèn)值IDInt數(shù)據(jù)庫(kù)自增長(zhǎng)User_idChar客戶端IDWifi_nameCharWifi名稱Wifi_pwdCharWif密碼Location_latLong位置經(jīng)度Locaton_lngLong位置緯度這里,由于數(shù)據(jù)庫(kù)將客戶端ID設(shè)置為自增長(zhǎng)模式,因此,數(shù)據(jù)庫(kù)中每增加一個(gè)wifi信息時(shí),就給客戶端ID自動(dòng)匹配一個(gè)序號(hào)。當(dāng)用戶想通過(guò)客戶端尋找免費(fèi)的wifi時(shí),先通過(guò)客戶端向服務(wù)器發(fā)送第一請(qǐng)求信息。所述第一請(qǐng)求信息中包括:客戶端當(dāng)前的位置信息,所述位置信息是由客戶端通過(guò)GPS數(shù)據(jù)及基站數(shù)據(jù)來(lái)確定的得到經(jīng)度坐標(biāo)及緯度坐標(biāo)。這里,在客戶端向服務(wù)器發(fā)送第一請(qǐng)求信息之前,還需判斷是否連連接上移動(dòng)網(wǎng)絡(luò),如果確定連接上移動(dòng)網(wǎng)絡(luò),則會(huì)允許執(zhí)行向服務(wù)器發(fā)送第一請(qǐng)求信息;如果沒(méi)有連接上任何網(wǎng)絡(luò),則提示是否開(kāi)啟wifi或移動(dòng)網(wǎng)絡(luò)。并且,如果已經(jīng)連接上wifi,則可以提示用戶執(zhí)行將wifi信息上傳至服務(wù)器的操作。當(dāng)服務(wù)器接收到第一請(qǐng)求信息后,根據(jù)所述第一請(qǐng)求信息查找所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息,并將查詢到的可用wifi的ID返回至所述客戶端。其中,所述第一請(qǐng)求信息中包括:所述客戶端當(dāng)前位置信息。具體地,所述服務(wù)器接收到第一請(qǐng)求信息后,將第一請(qǐng)求信息中的經(jīng)度用$lng賦值,將緯度用$lat賦值;利用代碼$dlng=2*asin(sin($distance/(2*EARTH_RADIUS)))/cos(deg2rad($lat));將經(jīng)度轉(zhuǎn)為經(jīng)度坐標(biāo);再利用代碼$dlng=rad2deg($dlng);將經(jīng)度坐標(biāo)轉(zhuǎn)為經(jīng)度值。同樣的,利用代碼$dlat=$distance/EARTH_RADIUS;將緯度轉(zhuǎn)化為緯度坐標(biāo);再利用代碼$dlat=rad2deg($dlat);將緯度坐標(biāo)轉(zhuǎn)化為緯度值。其中,EARTH_RADIUS常量,該常量是地球的半徑,平均值為6371000米,Distance為所需要得到客戶端周圍點(diǎn)的半徑,這里我們將該值設(shè)置為100m,以能確保wifi信號(hào)的強(qiáng)度。當(dāng)經(jīng)度值和緯度值都確定之后,基于所述經(jīng)度值及所述緯度值確定客戶端的當(dāng)前坐標(biāo),以所述當(dāng)前坐標(biāo)為基準(zhǔn)點(diǎn),按照預(yù)設(shè)的查找距離定義出四個(gè)范圍點(diǎn),形成一查找區(qū)域。其中,每個(gè)范圍點(diǎn)都為一個(gè)數(shù)組,分別為當(dāng)前坐標(biāo)的左上點(diǎn)left-top、當(dāng)前坐標(biāo)的右上點(diǎn)right-top、當(dāng)前坐標(biāo)的左下點(diǎn)left-bottom及當(dāng)前坐標(biāo)的右下點(diǎn)rightt-bottom;這四個(gè)點(diǎn)形成一查找區(qū)域,所述查找區(qū)域的形狀為方形,邊長(zhǎng)為100mm。具體地,可以利用以下代碼來(lái)分別確定四個(gè)范圍點(diǎn):left-top:[lat+dlat,lng–dlng]//左上點(diǎn)right-top:[lat+dlat,lng+dlng]//右上點(diǎn)left-bottom:[lat–dlat,lng–dlng]//左下點(diǎn)right-bottom:[lat–dlat,lng+dlng]//右下點(diǎn)當(dāng)服務(wù)器將查找區(qū)域確定好之后,使用sql語(yǔ)句來(lái)查詢?cè)搮^(qū)域中是否有存在可用的wifi信息,其查詢語(yǔ)句如下:select*from表名whereLocation_lat<=left-top[0]andLocation_lat<=right-top[0]andLocation_lat>=left-bottom[0]andLocation_lat>=right-bottom[0]andLocaton_lng<=left-top[1]andLocaton_lng<=right-top[1]andLocation_lng>=left-bottom[1]andLocation_lng>=right-bottom[1];使用上述語(yǔ)句即可查詢到該查詢范圍內(nèi)是否有可用wifi信息存在,如確定有可用wifi存在,則將查詢到的可用wifi的ID以字符串編碼的形式返回至所述客戶端。這里,為了防止服務(wù)器在提供wifi的信息時(shí)遭到泄露,所以將wifi的ID以字符串編碼的形式返回。S302,所述客戶端根據(jù)所述可用wifi的ID掃描所述可用wifi信息后,獲取一wifi的名稱及對(duì)應(yīng)的ID,并將所述wifi的名稱及對(duì)應(yīng)的ID封裝至第二請(qǐng)求信息中,將所述第二請(qǐng)求信息發(fā)送至所述服務(wù)器,以使所述服務(wù)器基于所述第二請(qǐng)求信息向所述客戶端發(fā)送wifi名稱和密碼。本步驟中,客戶端接收到可用wifi的ID后,利用wifiManager中的startScan();來(lái)掃描可用的wifi信息,其中,掃描的間隔定義為200毫秒執(zhí)行一次,當(dāng)掃描超過(guò)30秒則自動(dòng)關(guān)閉掃描功能。當(dāng)掃描出wifi信息后,并將該信息通過(guò)廣播發(fā)送出,利用所述信息獲取wifi的名稱及對(duì)應(yīng)的ID。并將所述wifi的名稱、對(duì)應(yīng)的ID及將wifi的ID字符串編碼封裝至第二請(qǐng)求信息中,將第二請(qǐng)求信息發(fā)送至服務(wù)器。當(dāng)服務(wù)器接收到第二請(qǐng)求信息后,首先將返回的wifi的ID組合字符串編碼進(jìn)行拆分,拆分后,根據(jù)第二請(qǐng)求信息中的wifi名稱,查詢數(shù)據(jù)庫(kù)中該ID字段內(nèi)是否有相應(yīng)wifi名稱與之匹配,有則將wifi名稱與密碼一并返回至客戶端,沒(méi)有則返回空,提示客戶端沒(méi)有查詢到該范圍內(nèi)的wifi,那么客戶端則繼續(xù)掃描可用的wifi信息。S303,所述客戶端基于所述wifi的名稱和密碼連接所述wifi。本步驟中,當(dāng)所述客戶端接收到wifi名稱和密碼后,利用wifi名稱和密碼連接所述wifi,具體可以通過(guò)如下代碼實(shí)現(xiàn):WifiConfigurationwifiConfig=createWifiInfo(ssid,password,type);在該代碼中,ssid為wifi的名稱,password為wifi的密碼,type為連接狀態(tài),作為可選的實(shí)施例:當(dāng)客戶端連接上所述wifi后,所述方法還包括:生成連接標(biāo)記以記錄當(dāng)前的連接狀態(tài);當(dāng)退出應(yīng)用時(shí),查詢所述連接標(biāo)記是否還存在wifi連接,當(dāng)確定還存在wifi連接時(shí),斷開(kāi)當(dāng)前連接。當(dāng)斷開(kāi)當(dāng)前連接后,當(dāng)客戶端再次位于該區(qū)域范圍內(nèi)時(shí),即使搜索到該wifi信息,也不會(huì)自動(dòng)連接,只有再次發(fā)送請(qǐng)求才會(huì)連接,這樣不但就確保了wifi信號(hào)的強(qiáng)度,也確保了wifi信息的安全性。這里,當(dāng)客戶端再次位于該區(qū)域范圍內(nèi)時(shí),即使搜索到該wifi信息,也不會(huì)自動(dòng)連接的具體實(shí)現(xiàn)方式為:將type填寫成WifiCipherType.WIFICIPHER_WPA。以上是基于客戶端側(cè)wifi共享的方法的具體實(shí)施過(guò)程。實(shí)施例三本發(fā)明還提供一種wifi共享的方法,該方法中客戶端和服務(wù)器主要的交互過(guò)程為:客戶端發(fā)送第一請(qǐng)求信息;服務(wù)器接收所述第一請(qǐng)求信息,根據(jù)所述第一請(qǐng)求信息查找所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息,并將查詢到的可用wifi的ID返回至所述客戶端;所述客戶端根據(jù)所述可用wifi的ID掃描所述可用wifi信息后,獲取一wifi的名稱及對(duì)應(yīng)的ID,并將所述wifi的名稱及對(duì)應(yīng)的ID封裝至第二請(qǐng)求信息中,將所述第二請(qǐng)求信息發(fā)送至所述服務(wù)器;服務(wù)器基于所述第二請(qǐng)求信息向所述客戶端發(fā)送wifi名稱和密碼;所述客戶端基于所述wifi名稱和密碼連接所述wifi。本發(fā)明中,所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息是由N個(gè)客戶端上傳至所述服務(wù)器中的。具體地,當(dāng)客戶端在某個(gè)地方已經(jīng)連接上wifi信息時(shí),利用Android中java命令:Runtime.getRuntime().exec()來(lái)執(zhí)行cat/data/misc/wifi/*.conf\n,去模擬命令行來(lái)得到具體的wifi信息;在得到該wifi信息后,通過(guò)GPS自動(dòng)獲取當(dāng)前位置信息,在獲取到當(dāng)前位置的經(jīng)緯度坐標(biāo)后,連同wifi信息及客戶端ID一起上傳至服務(wù)器中。服務(wù)器接收客戶端發(fā)送的第一請(qǐng)求信息之前,將N個(gè)客戶端上傳的wifi信息儲(chǔ)存至預(yù)先建立的數(shù)據(jù)庫(kù)的表中,這里,服務(wù)器是通過(guò)確定數(shù)據(jù)庫(kù)表名及數(shù)值類型,基于所述數(shù)據(jù)庫(kù)表名及所述數(shù)值類型構(gòu)建數(shù)據(jù)庫(kù)的表。所述數(shù)據(jù)庫(kù)可以為mysql數(shù)據(jù)庫(kù);所述wifi信息包括:客戶端ID、wifi名稱、wifi密碼及客戶端當(dāng)前所在的位置信息。這里,所述客戶端ID是用于識(shí)別客戶端所屬用戶身份的唯一標(biāo)識(shí),可以是用戶名稱,也可以是用戶編號(hào)之類的,本發(fā)明中是以移動(dòng)設(shè)備國(guó)際身份碼IMEI為客戶端ID。所述wifi的ID是指wifi的MAC地址;所述客戶端當(dāng)前所在的位置信息包括:位置經(jīng)度及位置緯度。當(dāng)用戶通過(guò)客戶端上傳完wifi信息并儲(chǔ)存成功后,服務(wù)器會(huì)向客戶端返回儲(chǔ)存成功的信息提示,用戶可以根據(jù)該信息提示執(zhí)行相應(yīng)的操作,比如,根據(jù)該信息提示執(zhí)行相應(yīng)獎(jiǎng)勵(lì)申請(qǐng)請(qǐng)求,那么服務(wù)器就會(huì)根據(jù)該請(qǐng)求查詢向?qū)?yīng)的客戶端ID,為用戶發(fā)送相應(yīng)的獎(jiǎng)勵(lì)。這里,所述數(shù)據(jù)庫(kù)的表結(jié)構(gòu)如表1所示:表1表名類型描述默認(rèn)值IDInt數(shù)據(jù)庫(kù)自增長(zhǎng)User_idChar客戶端IDWifi_nameCharWifi名稱Wifi_pwdCharWif密碼Location_latLong位置經(jīng)度Locaton_lngLong位置緯度這里,由于數(shù)據(jù)庫(kù)將客戶端ID設(shè)置為自增長(zhǎng)模式,因此,數(shù)據(jù)庫(kù)的表中每增加一個(gè)wifi信息時(shí),就給客戶端ID自動(dòng)匹配一個(gè)序號(hào)。具體地,請(qǐng)參見(jiàn)圖4,本發(fā)明提供的wifi共享方法的結(jié)構(gòu)圖:S1,當(dāng)用戶想通過(guò)客戶端尋找免費(fèi)的wifi時(shí),先通過(guò)客戶端向服務(wù)器發(fā)送第一請(qǐng)求信息。所述第一請(qǐng)求信息中包括:客戶端當(dāng)前的位置信息,所述位置信息是由客戶端通過(guò)GPS數(shù)據(jù)及基站數(shù)據(jù)來(lái)確定的得到經(jīng)度坐標(biāo)及緯度坐標(biāo)。這里,在客戶端向服務(wù)器發(fā)送第一請(qǐng)求信息之前,還需判斷是否連連接上移動(dòng)網(wǎng)絡(luò),如果確定連接上移動(dòng)網(wǎng)絡(luò),則會(huì)允許執(zhí)行向服務(wù)器發(fā)送第一請(qǐng)求信息;如果沒(méi)有連接上任何網(wǎng)絡(luò),則提示是否開(kāi)啟wifi或移動(dòng)網(wǎng)絡(luò)。并且,如果已經(jīng)連接上wifi,則可以提示用戶執(zhí)行將wifi信息上傳至服務(wù)器的操作。S2,服務(wù)器根據(jù)所述第一請(qǐng)求信息在數(shù)據(jù)庫(kù)中查找所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息,并將查詢到的可用wifi的ID返回至所述客戶端。具體地,所述服務(wù)器接收到第一請(qǐng)求信息后,將第一請(qǐng)求信息中的經(jīng)度用$lng賦值,將緯度用$lat賦值;利用代碼$dlng=2*asin(sin($distance/(2*EARTH_RADIUS)))/cos(deg2rad($lat));將經(jīng)度轉(zhuǎn)為經(jīng)度坐標(biāo);再利用代碼$dlng=rad2deg($dlng);將經(jīng)度坐標(biāo)轉(zhuǎn)為經(jīng)度值。同樣的,利用代碼$dlat=$distance/EARTH_RADIUS;將緯度轉(zhuǎn)化為緯度坐標(biāo);再利用代碼$dlat=rad2deg($dlat);將緯度坐標(biāo)轉(zhuǎn)化為緯度值。其中,EARTH_RADIUS常量,該常量是地球的半徑,平均值為6371000米,Distance為所需要得到客戶端周圍點(diǎn)的半徑,這里我們將該值設(shè)置為100m,以能確保wifi信號(hào)的強(qiáng)度。當(dāng)經(jīng)度值和緯度值都確定之后,基于所述經(jīng)度值及所述緯度值確定客戶端的當(dāng)前坐標(biāo),以所述當(dāng)前坐標(biāo)為基準(zhǔn)點(diǎn),按照預(yù)設(shè)的查找距離定義出四個(gè)范圍點(diǎn),形成一查找區(qū)域。其中,每個(gè)范圍點(diǎn)都為一個(gè)數(shù)組,分別為當(dāng)前坐標(biāo)的左上點(diǎn)left-top、當(dāng)前坐標(biāo)的右上點(diǎn)right-top、當(dāng)前坐標(biāo)的左下點(diǎn)left-bottom及當(dāng)前坐標(biāo)的右下點(diǎn)rightt-bottom;這四個(gè)點(diǎn)形成一查找區(qū)域,所述查找區(qū)域的形狀為方形,邊長(zhǎng)為100mm。具體地,可以利用以下代碼來(lái)分別確定四個(gè)范圍點(diǎn):left-top:[lat+dlat,lng–dlng]//左上點(diǎn)right-top:[lat+dlat,lng+dlng]//右上點(diǎn)left-bottom:[lat–dlat,lng–dlng]//左下點(diǎn)right-bottom:[lat–dlat,lng+dlng]//右下點(diǎn)當(dāng)服務(wù)器將查找區(qū)域確定好之后,使用sql語(yǔ)句來(lái)查詢?cè)搮^(qū)域中是否有存在可用的wifi信息,其查詢語(yǔ)句如下:select*from表名whereLocation_lat<=left-top[0]andLocation_lat<=right-top[0]andLocation_lat>=left-bottom[0]andLocation_lat>=right-bottom[0]andLocaton_lng<=left-top[1]andLocaton_lng<=right-top[1]andLocation_lng>=left-bottom[1]andLocation_lng>=right-bottom[1];使用上述語(yǔ)句即可查詢到該查詢范圍內(nèi)是否有可用wifi信息存在,如確定有可用wifi存在,則將查詢到的可用wifi的ID以字符串編碼的形式返回至所述客戶端。這里,為了防止服務(wù)器在提供wifi的信息時(shí)遭到泄露,所以將wifi的ID以字符串編碼的形式返回。S3,客戶端根據(jù)所述可用wifi的ID掃描所述可用wifi信息后,獲取一wifi的名稱及對(duì)應(yīng)的ID,并將所述wifi的名稱及對(duì)應(yīng)的ID封裝至第二請(qǐng)求信息中,將所述第二請(qǐng)求信息發(fā)送至所述服務(wù)器。具體地,客戶端接收到可用wifi的ID后,利用wifiManager中的startScan();來(lái)掃描可用的wifi信息,其中,掃描的間隔定義為200毫秒執(zhí)行一次,當(dāng)掃描超過(guò)30秒則自動(dòng)關(guān)閉掃描功能。當(dāng)掃描出wifi信息后,并將該信息通過(guò)廣播發(fā)送出,利用所述信息獲取wifi的名稱及對(duì)應(yīng)的ID。并將所述wifi的名稱、對(duì)應(yīng)的ID及將wifi的ID字符串編碼封裝至第二請(qǐng)求信息中,將第二請(qǐng)求信息發(fā)送至服務(wù)器。S4,服務(wù)器基于所述第二請(qǐng)求信息向所述客戶端發(fā)送wifi名稱和密碼。當(dāng)服務(wù)器接收到第二請(qǐng)求信息后,首先將返回的wifi的ID組合字符串編碼進(jìn)行拆分,拆分后,根據(jù)第二請(qǐng)求信息中的wifi名稱,查詢數(shù)據(jù)庫(kù)中該ID字段內(nèi)是否有相應(yīng)wifi名稱與之匹配,有則將wifi名稱與密碼一并返回至客戶端,沒(méi)有則返回空,提示客戶端沒(méi)有查詢到該范圍內(nèi)的wifi,那么客戶端則繼續(xù)掃描可用的wifi信息。S5,所述客戶端基于所述wifi名稱和密碼連接所述wifi。當(dāng)所述客戶端接收到wifi名稱和密碼后,利用wifi名稱和密碼連接所述wifi,具體可以通過(guò)如下代碼實(shí)現(xiàn):WifiConfigurationwifiConfig=createWifiInfo(ssid,password,type);在該代碼中,ssid為wifi的名稱,password為wifi的密碼,type為連接狀態(tài),作為可選的實(shí)施例:當(dāng)客戶端連接上所述wifi后,所述方法還包括:生成連接標(biāo)記以記錄當(dāng)前的連接狀態(tài);當(dāng)退出應(yīng)用時(shí),查詢所述連接標(biāo)記是否還存在wifi連接,當(dāng)確定還存在wifi連接時(shí),斷開(kāi)當(dāng)前連接。當(dāng)斷開(kāi)當(dāng)前連接后,當(dāng)客戶端再次位于該區(qū)域范圍內(nèi)時(shí),即使搜索到該wifi信息,也不會(huì)自動(dòng)連接,只有再次發(fā)送請(qǐng)求才會(huì)連接,這樣不但確保了wifi信號(hào)的強(qiáng)度,也確保了wifi信息的安全性。這里,當(dāng)客戶端再次位于該區(qū)域范圍內(nèi)時(shí),即使搜索到該wifi信息,也不會(huì)自動(dòng)連接的具體實(shí)現(xiàn)方式為:將type填寫成WifiCipherType.WIFICIPHER_WPA。以上是一種wifi共享的方法的具體實(shí)施過(guò)程。基于同一發(fā)明構(gòu)思,在下面的實(shí)施例,介紹一種wifi共享的系統(tǒng)。實(shí)施例四在本發(fā)明的實(shí)施例,介紹一種wifi共享的系統(tǒng),所述系統(tǒng)包括:客戶端及服務(wù)器;服務(wù)器用于接收所述第一請(qǐng)求信息,根據(jù)所述第一請(qǐng)求信息查找所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息,并將查詢到的可用wifi的ID返回至所述客戶端。本發(fā)明中,所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息是由N個(gè)客戶端上傳至所述服務(wù)器中的。具體地,當(dāng)客戶端在某個(gè)地方已經(jīng)連接上wifi信息時(shí),利用Android中java命令:Runtime.getRuntime().exec()來(lái)執(zhí)行cat/data/misc/wifi/*.conf\n,去模擬命令行來(lái)得到具體的wifi信息;在得到該wifi信息后,通過(guò)GPS自動(dòng)獲取當(dāng)前位置信息,在獲取到當(dāng)前位置的經(jīng)緯度坐標(biāo)后,連同wifi信息及客戶端ID一起上傳至服務(wù)器中。服務(wù)器接收客戶端發(fā)送的第一請(qǐng)求信息之前,將N個(gè)客戶端上傳的wifi信息儲(chǔ)存至預(yù)先建立的數(shù)據(jù)庫(kù)的表中,這里,服務(wù)器是通過(guò)確定數(shù)據(jù)庫(kù)表名及數(shù)值類型,基于所述數(shù)據(jù)庫(kù)表名及所述數(shù)值類型構(gòu)建數(shù)據(jù)庫(kù)的表。所述數(shù)據(jù)庫(kù)可以為mysql數(shù)據(jù)庫(kù);所述wifi信息包括:客戶端ID、wifi名稱、wifi密碼及客戶端當(dāng)前所在的位置信息。這里,所述客戶端ID是用于識(shí)別客戶端所屬用戶身份的唯一標(biāo)識(shí),可以是用戶名稱,也可以是用戶編號(hào)之類的,本發(fā)明中是以移動(dòng)設(shè)備國(guó)際身份碼IMEI為客戶端ID。所述wifi的ID是指wifi的MAC地址;所述客戶端當(dāng)前所在的位置信息包括:位置經(jīng)度及位置緯度。當(dāng)用戶通過(guò)客戶端上傳完wifi信息并儲(chǔ)存成功后,服務(wù)器會(huì)向客戶端返回儲(chǔ)存成功的信息提示,用戶可以根據(jù)該信息提示執(zhí)行相應(yīng)的操作,比如,根據(jù)該信息提示執(zhí)行相應(yīng)獎(jiǎng)勵(lì)申請(qǐng)請(qǐng)求,那么服務(wù)器就會(huì)根據(jù)該請(qǐng)求查詢向?qū)?yīng)的客戶端ID,為用戶發(fā)送相應(yīng)的獎(jiǎng)勵(lì)。這里,所述數(shù)據(jù)庫(kù)的表結(jié)構(gòu)如表1所示:表1表名類型描述默認(rèn)值IDInt數(shù)據(jù)庫(kù)自增長(zhǎng)User_idChar客戶端IDWifi_nameCharWifi名稱Wifi_pwdCharWif密碼Location_latLong位置經(jīng)度Locaton_lngLong位置緯度這里,由于數(shù)據(jù)庫(kù)將客戶端ID設(shè)置為自增長(zhǎng)模式,因此,數(shù)據(jù)庫(kù)中每增加一個(gè)wifi信息時(shí),就給客戶端ID自動(dòng)匹配一個(gè)序號(hào)。而當(dāng)用戶想通過(guò)客戶端尋找免費(fèi)的wifi時(shí),先通過(guò)客戶端向服務(wù)器發(fā)送第一請(qǐng)求信息。所述第一請(qǐng)求信息中包括:客戶端當(dāng)前的位置信息,所述位置信息是由客戶端通過(guò)GPS數(shù)據(jù)及基站數(shù)據(jù)來(lái)確定的得到經(jīng)度坐標(biāo)及緯度坐標(biāo)。這里,在客戶端向服務(wù)器發(fā)送第一請(qǐng)求信息之前,還需用于判斷是否連連接上移動(dòng)網(wǎng)絡(luò),如果確定連接上移動(dòng)網(wǎng)絡(luò),則會(huì)允許執(zhí)行向服務(wù)器發(fā)送第一請(qǐng)求信息;如果沒(méi)有連接上任何網(wǎng)絡(luò),則提示是否開(kāi)啟wifi或移動(dòng)網(wǎng)絡(luò)。并且,如果已經(jīng)連接上wifi,則可以提示用戶執(zhí)行將wifi信息上傳至服務(wù)器的操作。當(dāng)所述服務(wù)器接收到第一請(qǐng)求信息后,用于將第一請(qǐng)求信息中的經(jīng)度用$lng賦值,將緯度用$lat賦值;利用代碼$dlng=2*asin(sin($distance/(2*EARTH_RADIUS)))/cos(deg2rad($lat));將經(jīng)度轉(zhuǎn)為經(jīng)度坐標(biāo);再利用代碼$dlng=rad2deg($dlng);將經(jīng)度坐標(biāo)轉(zhuǎn)為經(jīng)度值。同樣的,利用代碼$dlat=$distance/EARTH_RADIUS;將緯度轉(zhuǎn)化為緯度坐標(biāo);再利用代碼$dlat=rad2deg($dlat);將緯度坐標(biāo)轉(zhuǎn)化為緯度值。其中,EARTH_RADIUS常量,該常量是地球的半徑,平均值為6371000米,Distance為所需要得到客戶端周圍點(diǎn)的半徑,這里我們將該值設(shè)置為100m,以能確保wifi信號(hào)的強(qiáng)度。當(dāng)經(jīng)度值和緯度值都確定之后,基于所述經(jīng)度值及所述緯度值確定客戶端的當(dāng)前坐標(biāo),以所述當(dāng)前坐標(biāo)為基準(zhǔn)點(diǎn),按照預(yù)設(shè)的查找距離定義出四個(gè)范圍點(diǎn),形成一查找區(qū)域。其中,每個(gè)范圍點(diǎn)都為一個(gè)數(shù)組,分別為當(dāng)前坐標(biāo)的左上點(diǎn)left-top、當(dāng)前坐標(biāo)的右上點(diǎn)right-top、當(dāng)前坐標(biāo)的左下點(diǎn)left-bottom及當(dāng)前坐標(biāo)的右下點(diǎn)rightt-bottom;這四個(gè)點(diǎn)形成一查找區(qū)域,所述查找區(qū)域的形狀為方形,邊長(zhǎng)為100mm。具體地,可以利用以下代碼來(lái)分別確定四個(gè)范圍點(diǎn):left-top:[lat+dlat,lng–dlng]//左上點(diǎn)right-top:[lat+dlat,lng+dlng]//右上點(diǎn)left-bottom:[lat–dlat,lng–dlng]//左下點(diǎn)right-bottom:[lat–dlat,lng+dlng]//右下點(diǎn)當(dāng)服務(wù)器將查找區(qū)域確定好之后,使用sql語(yǔ)句來(lái)查詢?cè)搮^(qū)域中是否有存在可用的wifi信息,其查詢語(yǔ)句如下:select*from表名whereLocation_lat<=left-top[0]andLocation_lat<=right-top[0]andLocation_lat>=left-bottom[0]andLocation_lat>=right-bottom[0]andLocaton_lng<=left-top[1]andLocaton_lng<=right-top[1]andLocation_lng>=left-bottom[1]andLocation_lng>=right-bottom[1];使用上述語(yǔ)句即可查詢到該查詢范圍內(nèi)是否有可用wifi信息存在,如確定有可用wifi存在,則將查詢到的可用wifi的ID以字符串編碼的形式返回至所述客戶端。這里,為了防止服務(wù)器在提供wifi的信息時(shí)遭到泄露,所以將wifi的ID以字符串編碼的形式返回。當(dāng)所述客戶端接收到可用wifi的ID以字符串編碼后,用于根據(jù)所述可用wifi的ID掃描所述可用wifi信息后,獲取一wifi的名稱及對(duì)應(yīng)的ID,并將所述wifi的名稱及對(duì)應(yīng)的ID封裝至第二請(qǐng)求信息中,將所述第二請(qǐng)求信息發(fā)送至所述服務(wù)器;具體地,客戶端接收到可用wifi的ID后,利用wifiManager中的startScan();來(lái)掃描可用的wifi信息,其中,掃描的間隔定義為200毫秒執(zhí)行一次,當(dāng)掃描超過(guò)30秒則自動(dòng)關(guān)閉掃描功能。當(dāng)掃描出wifi信息后,并將該信息通過(guò)廣播發(fā)送出,利用所述信息獲取wifi的名稱及對(duì)應(yīng)的ID。并將所述wifi的名稱、對(duì)應(yīng)的ID及將wifi的ID字符串編碼封裝至第二請(qǐng)求信息中,將第二請(qǐng)求信息發(fā)送至服務(wù)器。當(dāng)所述服務(wù)器接收到第二請(qǐng)求信息后,基于所述第二請(qǐng)求信息向所述客戶端發(fā)送wifi名稱和密碼;具體地,當(dāng)服務(wù)器接收到第二請(qǐng)求信息后,首先將返回的wifi的ID組合字符串編碼進(jìn)行拆分,拆分后,根據(jù)第二請(qǐng)求信息中的wifi名稱,查詢數(shù)據(jù)庫(kù)中該ID字段內(nèi)是否有相應(yīng)wifi名稱與之匹配,有則將wifi名稱與密碼一并返回至客戶端,沒(méi)有則返回空,提示客戶端沒(méi)有查詢到該范圍內(nèi)的wifi,那么客戶端則繼續(xù)掃描可用的wifi信息。當(dāng)所述客戶端接收到所述wifi名稱和密碼后,基于所述wifi名稱和密碼連接所述wifi。具體可以通過(guò)如下代碼實(shí)現(xiàn):WifiConfigurationwifiConfig=createWifiInfo(ssid,password,type);在該代碼中,ssid為wifi的名稱,password為wifi的密碼,type為連接狀態(tài),作為可選的實(shí)施例:當(dāng)客戶端連接上所述wifi后,生成連接標(biāo)記以記錄當(dāng)前的連接狀態(tài);當(dāng)退出應(yīng)用時(shí),查詢所述連接標(biāo)記是否還存在wifi連接,當(dāng)確定還存在wifi連接時(shí),斷開(kāi)當(dāng)前連接。當(dāng)斷開(kāi)當(dāng)前連接后,當(dāng)客戶端再次位于該區(qū)域范圍內(nèi)時(shí),即使搜索到該wifi信息,也不會(huì)自動(dòng)連接,只有再次發(fā)送請(qǐng)求才會(huì)連接,這樣不但就確保了wifi信號(hào)的強(qiáng)度,也確保了wifi信息的安全性。這里,當(dāng)客戶端再次位于該區(qū)域范圍內(nèi)時(shí),即使搜索到該wifi信息,也不會(huì)自動(dòng)連接的具體實(shí)現(xiàn)方式為:將type填寫成WifiCipherType.WIFICIPHER_WPA。實(shí)施例五本發(fā)明提供一種服務(wù)器,如圖4所示,所述服務(wù)器包括:接收單元41、查詢單元42及發(fā)送單元43;其中,接收單元41用于接收客戶端發(fā)送的第一請(qǐng)求信息。查詢單元42,用于根據(jù)所述第一請(qǐng)求信息查找所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息,并將查詢到的可用所述wifi的ID返回至所述客戶端。本發(fā)明中,wifi信息是由不同的用戶利用客戶端上傳至服務(wù)器中的,且一個(gè)用戶對(duì)應(yīng)一個(gè)客戶端。具體地,當(dāng)客戶端在某個(gè)地方已經(jīng)連接上wifi信息時(shí),利用Android中java命令:Runtime.getRuntime().exec()來(lái)執(zhí)行cat/data/misc/wifi/*.conf\n,去模擬命令行來(lái)得到具體的wifi信息;在得到該wifi信息后,通過(guò)GPS自動(dòng)獲取當(dāng)前位置信息,在獲取到當(dāng)前位置的經(jīng)緯度坐標(biāo)后,連同wifi信息及客戶端ID一起上傳至服務(wù)器中。這里,服務(wù)器還包括:構(gòu)建單元54及儲(chǔ)存單元45;所述構(gòu)建單元54,用于確定數(shù)據(jù)庫(kù)表名及數(shù)值類型,并基于所述數(shù)據(jù)庫(kù)表名及所述數(shù)值類型構(gòu)建數(shù)據(jù)庫(kù)的表。所述數(shù)據(jù)庫(kù)可以為mysql數(shù)據(jù)庫(kù)。所述儲(chǔ)存單元45用于將wifi信息儲(chǔ)存至數(shù)據(jù)庫(kù)的表中,所述wifi信息包括:客戶端ID、wifi名稱、wifi密碼及客戶端當(dāng)前所在的位置信息。這里,所述客戶端ID是用于識(shí)別客戶端所屬用戶身份的唯一標(biāo)識(shí),可以是用戶名稱,也可以是用戶編號(hào)之類的,本發(fā)明中是以移動(dòng)設(shè)備國(guó)際身份碼IMEI為客戶端ID。所述wifi的ID是指wifi的MAC地址;所述客戶端當(dāng)前所在的位置信息包括:位置經(jīng)度及位置緯度。當(dāng)用戶通過(guò)客戶端上傳完wifi信息并儲(chǔ)存成功后,服務(wù)器會(huì)向客戶端返回儲(chǔ)存成功的信息提示,用戶可以根據(jù)該信息提示執(zhí)行相應(yīng)的操作,比如,根據(jù)該信息提示執(zhí)行相應(yīng)獎(jiǎng)勵(lì)申請(qǐng)請(qǐng)求,那么服務(wù)器就會(huì)根據(jù)該請(qǐng)求查詢向?qū)?yīng)的客戶端ID,為用戶發(fā)送相應(yīng)的獎(jiǎng)勵(lì)。這里,所述數(shù)據(jù)庫(kù)的表結(jié)構(gòu)如表1所示:表1表名類型描述默認(rèn)值IDInt數(shù)據(jù)庫(kù)自增長(zhǎng)User_idChar客戶端IDWifi_nameCharWifi名稱Wifi_pwdCharWif密碼Location_latLong位置經(jīng)度Locaton_lngLong位置緯度這里,由于數(shù)據(jù)庫(kù)將客戶端ID設(shè)置為自增長(zhǎng)模式,因此,數(shù)據(jù)庫(kù)中每增加一個(gè)wifi信息時(shí),就給客戶端ID自動(dòng)匹配一個(gè)序號(hào)。而當(dāng)用戶想通過(guò)客戶端尋找免費(fèi)的wifi時(shí),先通過(guò)客戶端向服務(wù)器發(fā)送第一請(qǐng)求信息。其中,所述第一請(qǐng)求信息中包括:客戶端當(dāng)前的位置信息,所述位置信息是由客戶端通過(guò)GPS數(shù)據(jù)及基站數(shù)據(jù)來(lái)確定的得到經(jīng)度坐標(biāo)及緯度坐標(biāo)。這里,在客戶端向服務(wù)器發(fā)送第一請(qǐng)求信息之前,還需用于判斷是否連連接上移動(dòng)網(wǎng)絡(luò),如果確定連接上移動(dòng)網(wǎng)絡(luò),則會(huì)允許執(zhí)行向服務(wù)器發(fā)送第一請(qǐng)求信息;如果沒(méi)有連接上任何網(wǎng)絡(luò),則提示是否開(kāi)啟wifi或移動(dòng)網(wǎng)絡(luò)。并且,如果已經(jīng)連接上wifi,則可以提示用戶執(zhí)行將wifi信息上傳至服務(wù)器的操作。當(dāng)接收單元51接收到第一請(qǐng)求信息后,所述查詢單元52用于將第一請(qǐng)求信息中的經(jīng)度用$lng賦值,將緯度用$lat賦值;利用代碼$dlng=2*asin(sin($distance/(2*EARTH_RADIUS)))/cos(deg2rad($lat));將經(jīng)度轉(zhuǎn)為經(jīng)度坐標(biāo);再利用代碼$dlng=rad2deg($dlng);將經(jīng)度坐標(biāo)轉(zhuǎn)為經(jīng)度值。同樣的,利用代碼$dlat=$distance/EARTH_RADIUS;將緯度轉(zhuǎn)化為緯度坐標(biāo);再利用代碼$dlat=rad2deg($dlat);將緯度坐標(biāo)轉(zhuǎn)化為緯度值。其中,EARTH_RADIUS常量,該常量是地球的半徑,平均值為6371000米,Distance為所需要得到客戶端周圍點(diǎn)的半徑,這里我們將該值設(shè)置為100m,以能確保wifi信號(hào)的強(qiáng)度。當(dāng)經(jīng)度值和緯度值都確定之后,基于所述經(jīng)度值及所述緯度值確定客戶端的當(dāng)前坐標(biāo),以所述當(dāng)前坐標(biāo)為基準(zhǔn)點(diǎn),按照預(yù)設(shè)的查找距離定義出四個(gè)范圍點(diǎn),形成一查找區(qū)域。其中,每個(gè)范圍點(diǎn)都為一個(gè)數(shù)組,分別為當(dāng)前坐標(biāo)的左上點(diǎn)left-top、當(dāng)前坐標(biāo)的右上點(diǎn)right-top、當(dāng)前坐標(biāo)的左下點(diǎn)left-bottom及當(dāng)前坐標(biāo)的右下點(diǎn)rightt-bottom;這四個(gè)點(diǎn)形成一查找區(qū)域,所述查找區(qū)域的形狀為方形,邊長(zhǎng)為100mm。具體地,可以利用以下代碼來(lái)分別確定四個(gè)范圍點(diǎn):left-top:[lat+dlat,lng–dlng]//左上點(diǎn)right-top:[lat+dlat,lng+dlng]//右上點(diǎn)left-bottom:[lat–dlat,lng–dlng]//左下點(diǎn)right-bottom:[lat–dlat,lng+dlng]//右下點(diǎn)當(dāng)所述查詢單元52將查找區(qū)域確定好之后,使用sql語(yǔ)句來(lái)查詢?cè)搮^(qū)域中是否有存在可用的wifi信息,其查詢語(yǔ)句如下:select*from表名whereLocation_lat<=left-top[0]andLocation_lat<=right-top[0]andLocation_lat>=left-bottom[0]andLocation_lat>=right-bottom[0]andLocaton_lng<=left-top[1]andLocaton_lng<=right-top[1]andLocation_lng>=left-bottom[1]andLocation_lng>=right-bottom[1];所述查詢單元52使用上述語(yǔ)句即可查詢到該查詢范圍內(nèi)是否有可用wifi信息存在,如確定有可用wifi存在,則通過(guò)發(fā)送單元53將查詢到的可用wifi的ID以字符串編碼的形式返回至所述客戶端。這里,為了防止服務(wù)器在提供wifi的信息時(shí)遭到泄露,所以將wifi的ID以字符串編碼的形式返回。當(dāng)所述客戶端接收到可用wifi的ID以字符串編碼后,用于根據(jù)所述可用wifi的ID掃描所述可用wifi信息后,獲取一wifi的名稱及對(duì)應(yīng)的ID,并將所述wifi的名稱及對(duì)應(yīng)的ID封裝至第二請(qǐng)求信息中,將所述第二請(qǐng)求信息發(fā)送至所述服務(wù)器;具體地,客戶端接收到可用wifi的ID后,利用wifiManager中的startScan();來(lái)掃描可用的wifi信息,其中,掃描的間隔定義為200毫秒執(zhí)行一次,當(dāng)掃描超過(guò)30秒則自動(dòng)關(guān)閉掃描功能。當(dāng)掃描出wifi信息后,并將該信息通過(guò)廣播發(fā)送出,利用所述信息獲取wifi的名稱及對(duì)應(yīng)的ID。并將所述wifi的名稱、對(duì)應(yīng)的ID及將wifi的ID字符串編碼封裝至第二請(qǐng)求信息中,將第二請(qǐng)求信息發(fā)送至服務(wù)器。當(dāng)所述接收單元51接收到第二請(qǐng)求信息后,所述查詢單元52還用于將返回的wifi的ID組合字符串編碼進(jìn)行拆分,拆分后,根據(jù)第二請(qǐng)求信息中的wifi名稱,查詢數(shù)據(jù)庫(kù)中該ID字段內(nèi)是否有相應(yīng)wifi名稱與之匹配,有則通過(guò)發(fā)送單元53將wifi名稱與密碼一并返回至客戶端,沒(méi)有則通過(guò)發(fā)送單元53返回空,并提示客戶端沒(méi)有查詢到該范圍內(nèi)的wifi,那么客戶端則繼續(xù)掃描可用的wifi信息。當(dāng)所述客戶端接收到所述wifi名稱和密碼后,基于所述wifi名稱和密碼連接所述wifi。具體可以通過(guò)如下代碼實(shí)現(xiàn):WifiConfigurationwifiConfig=createWifiInfo(ssid,password,type);在該代碼中,ssid為wifi的名稱,password為wifi的密碼,type為連接狀態(tài),作為可選的實(shí)施例:當(dāng)客戶端連接上所述wifi后,生成連接標(biāo)記以記錄當(dāng)前的連接狀態(tài);當(dāng)退出應(yīng)用時(shí),查詢所述連接標(biāo)記是否還存在wifi連接,當(dāng)確定還存在wifi連接時(shí),斷開(kāi)當(dāng)前連接。當(dāng)斷開(kāi)當(dāng)前連接后,當(dāng)客戶端再次位于該區(qū)域范圍內(nèi)時(shí),即使搜索到該wifi信息,也不會(huì)自動(dòng)連接,只有再次發(fā)送請(qǐng)求才會(huì)連接,這樣不但就確保了wifi信號(hào)的強(qiáng)度,也確保了wifi信息的安全性。這里,當(dāng)客戶端再次位于該區(qū)域范圍內(nèi)時(shí),即使搜索到該wifi信息,也不會(huì)自動(dòng)連接的具體實(shí)現(xiàn)方式為:將type填寫成WifiCipherType.WIFICIPHER_WPA。通過(guò)本發(fā)明的一個(gè)或者多個(gè)實(shí)施例,本發(fā)明具有以下有益效果或者優(yōu)點(diǎn):本發(fā)明提供一種明提供了一種wifi共享的方法及系統(tǒng),所述方法包括:服務(wù)器接收客戶端發(fā)送的第一請(qǐng)求信息,根據(jù)所述第一請(qǐng)求信息在數(shù)據(jù)庫(kù)中查找所述客戶端當(dāng)前位置所屬查找區(qū)域內(nèi)的wifi信息,并將查詢到的可用wifi的ID返回至所述客戶端;所述第一請(qǐng)求信息中包括:所述客戶端當(dāng)前位置信息;這樣,無(wú)論用戶處于何地,只要通過(guò)客戶端發(fā)送當(dāng)前位置信息后,即可接收到服務(wù)器返回的可用wifi的ID;客戶端接收到可用wifi的ID后,可以基于可用wifi的ID掃描所述可用wifi信息后獲取一wifi的名稱及對(duì)應(yīng)的ID,并將該wifi的名稱及對(duì)應(yīng)的ID封裝至第二請(qǐng)求信息中,將第二請(qǐng)求信息發(fā)送至服務(wù)器;服務(wù)器接收到所述客戶端發(fā)送的第二請(qǐng)求信息后,可以基于wifi的名稱及對(duì)應(yīng)的ID,將對(duì)應(yīng)的wifi名稱和密碼發(fā)送至客戶端,那么所述客戶端就可以基于所述wifi名稱和密碼連接所述wifi;這樣,用戶就就可以根據(jù)當(dāng)前位置信息能隨時(shí)隨地地連接到免費(fèi)wifi,提高了體驗(yàn)度且降低了使用成本。并且,當(dāng)客戶端斷開(kāi)當(dāng)前wifi連接后,客戶端再次位于該區(qū)域范圍內(nèi)時(shí),即使搜索到該wifi信息,也不會(huì)自動(dòng)連接,只有再次發(fā)送請(qǐng)求才會(huì)連接,這樣不但確保了wifi信號(hào)的強(qiáng)度,也確保了wifi信息的安全性。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁(yè)1 2 3