本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種局域網(wǎng)大文件分發(fā)方法及系統(tǒng)。
背景技術(shù):
使用c/s模式將大文件下發(fā)給同一局域網(wǎng)內(nèi)的多個(gè)終端時(shí),當(dāng)前一般的做法是:服務(wù)器將大文件傳送給每一個(gè)客戶端,這樣導(dǎo)致服務(wù)器分發(fā)所需流量大,分發(fā)瓶頸集中在服務(wù)器上,文件下發(fā)緩慢且導(dǎo)致服務(wù)器長(zhǎng)時(shí)間處理高負(fù)載狀態(tài),一旦負(fù)荷過(guò)重,還可能導(dǎo)致服務(wù)器宕機(jī),文件需重新發(fā)送。比如老師通過(guò)服務(wù)器下發(fā)一個(gè)100mb的文件給60個(gè)學(xué)生終端,服務(wù)器共需下發(fā)6000mb,假如局域網(wǎng)寬帶為100mbps,完成整個(gè)分發(fā)過(guò)程需6000mb/100mbps=480s,如果實(shí)在課間進(jìn)行分發(fā)如此長(zhǎng)的時(shí)間是難以接受的。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提出一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的一種局域網(wǎng)大文件分發(fā)方法及系統(tǒng),通過(guò)將大文件進(jìn)行切分,以文件塊的形式均衡分發(fā)給各客戶端,再由客戶端相互進(jìn)行分發(fā),從而降低服務(wù)器壓力和提升分發(fā)速度。
本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:
一方面,一種局域網(wǎng)大文件分發(fā)方法,包括:
步驟1,服務(wù)器維護(hù)客戶端列表信息,并將各客戶端依次編號(hào)為c1、c2、…、cn;其中,n表示處在同一局域網(wǎng)內(nèi)的客戶端的數(shù)量;
步驟2,所述服務(wù)器將文件虛擬平均切分為n塊,并依次標(biāo)識(shí)為f1、f2、…、fn;
步驟3,所述服務(wù)器維護(hù)文件塊信息,并將客戶端列表信息和文件塊信息發(fā)給所有客戶端;
步驟4,所述服務(wù)器根據(jù)文件塊信息將文件塊fi分發(fā)給客戶端ci;其中,i大于等于1小于等于n;
步驟5,客戶端ci根據(jù)客戶端列表信息將接收到的文件塊fi分發(fā)給局域網(wǎng)內(nèi)的其他客戶端;
步驟6,各客戶端根據(jù)文件塊信息將接收到的文件塊f1、f2、…、fn拼接成完整文件,校驗(yàn)文件完整性后通知服務(wù)器。
所述服務(wù)器將文件虛擬平均切分指沒(méi)有實(shí)際切分io操作,而是通過(guò)fseek()或seek()函數(shù)進(jìn)行文件讀寫偏移位置來(lái)進(jìn)行文件塊標(biāo)識(shí)。
所述文件塊信息包括文件塊標(biāo)識(shí)、文件塊目標(biāo)路徑、目標(biāo)文件名、文件大小、文件分塊數(shù)量和各文件塊大小。
所述客戶端列表信息包括所有客戶端的ip地址和端口號(hào)。
步驟5包括:客戶端ci根據(jù)客戶端列表信息中的ip地址和端口號(hào)將接收到的文件塊fi、文件塊序號(hào)i和文件塊fi的大小分發(fā)給局域網(wǎng)內(nèi)的其他客戶端。
各客戶端根據(jù)文件塊信息將接收到的文件塊f1、f2、…、fn拼接成完整文件,校驗(yàn)文件完整性后通知服務(wù)器之前,還包括:
各客戶端判斷接收文件塊超時(shí)或接收到的文件塊大小不正確時(shí),通知服務(wù)器直接分發(fā)文件塊或文件。
步驟6包括:各客戶端接收到一個(gè)來(lái)自其他客戶端的文件塊后,根據(jù)文件塊信息判斷所有文件塊是否接收完成,如果接收完成,將接收到的文件塊f1、f2、…、fn拼接成完整文件,校驗(yàn)文件完整性后通知服務(wù)器;否則,等待接收到所有文件塊后再進(jìn)行拼接。
所述校驗(yàn)文件完整性后通知服務(wù)器,包括:
如果客戶端根據(jù)文件塊信息校驗(yàn)文件大小正確,則發(fā)送消息通知服務(wù)器接收成功。
本發(fā)明一種局域網(wǎng)大文件分發(fā)方法,當(dāng)服務(wù)器有大文件需要分發(fā)給局域網(wǎng)內(nèi)的多個(gè)客戶端時(shí),首先通過(guò)fseek()或seek()函數(shù)對(duì)大文件進(jìn)行虛擬平均切分,然后將切分后的文件塊發(fā)送到對(duì)應(yīng)的客戶端,再由客戶端相互傳送文件塊,所有文件塊接收完成后各客戶端再將文件塊拼接成完整的文件,從而降低了服務(wù)器壓力和提升分發(fā)速度。
依據(jù)本發(fā)明的另一個(gè)方面,提供了一種局域網(wǎng)大文件分發(fā)系統(tǒng),包括服務(wù)器和若干處在同一局域網(wǎng)內(nèi)的客戶端;
所述服務(wù)器,用于維護(hù)客戶端列表信息,并將各客戶端依次編號(hào)為c1、c2、…、cn;將文件虛擬平均切分為n塊,并依次標(biāo)識(shí)為f1、f2、…、fn;維護(hù)文件塊信息,并將客戶端列表信息和文件塊信息發(fā)給所有客戶端;根據(jù)文件塊信息將文件塊fi分發(fā)給客戶端ci;
所述客戶端,用于根據(jù)客戶端列表信息將接收到的文件塊fi分發(fā)給局域網(wǎng)內(nèi)的其他客戶端;根據(jù)文件塊信息將接收到的文件塊f1、f2、…、fn拼接成完整文件,校驗(yàn)文件完整性后通知服務(wù)器。
所述客戶端還用于判斷接收文件塊超時(shí)或接收到的文件塊大小不正確時(shí),通知服務(wù)器直接分發(fā)文件塊或文件。
本發(fā)明提供的技術(shù)方案帶來(lái)的有益效果是:降低服務(wù)器壓力和提升分發(fā)速度。
上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚地了解本發(fā)明的技術(shù)手段,從而可依照說(shuō)明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下列舉本發(fā)明的具體實(shí)施方式。
根據(jù)下文結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的詳細(xì)描述,本領(lǐng)域技術(shù)人員將會(huì)更加明了本發(fā)明的上述及其他目的、優(yōu)點(diǎn)和特征。
附圖說(shuō)明
圖1為本發(fā)明方法流程圖;
圖2為本發(fā)明系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步的詳細(xì)描述。
需要說(shuō)明的是,本實(shí)施方式的方法的執(zhí)行主體包括服務(wù)器終端和多臺(tái)客戶機(jī)終端,所述終端為平板電腦、掌上電腦pda、筆記本或臺(tái)式機(jī)等設(shè)備,當(dāng)然,還可以為其他具有相似功能的設(shè)備,所述終端的型號(hào)配置根據(jù)實(shí)際需求進(jìn)行配置,本實(shí)施方式不加以限制。
參見(jiàn)圖1所示,一種局域網(wǎng)大文件分發(fā)方法,包括:
步驟101,服務(wù)器維護(hù)客戶端列表信息,并將各客戶端依次編號(hào)為c1、c2、…、cn;其中,n表示處在同一局域網(wǎng)內(nèi)的客戶端的數(shù)量。
具體的,所述客戶端列表信息包括所述客戶端列表信息包括所有客戶端的ip地址和端口號(hào)。
步驟102,所述服務(wù)器將文件虛擬平均切分為n塊,并依次標(biāo)識(shí)為f1、f2、…、fn。
具體的,所述服務(wù)器將文件虛擬平均切分指沒(méi)有實(shí)際切分io操作,而是通過(guò)fseek()或seek()函數(shù)進(jìn)行文件讀寫偏移位置來(lái)進(jìn)行文件塊標(biāo)識(shí)。這樣的話在服務(wù)器中仍然保留有完成的文件。
步驟103,所述服務(wù)器維護(hù)文件塊信息,并將客戶端列表信息和文件塊信息發(fā)給所有客戶端。
具體的,所述文件塊信息包括文件塊標(biāo)識(shí)、文件塊目標(biāo)路徑、目標(biāo)文件名、文件大小、文件分塊數(shù)量和各文件塊大小。所述文件塊標(biāo)識(shí)即用f1、f2、…、fn來(lái)表示的標(biāo)識(shí);所示文件塊目標(biāo)路徑指文件塊需要發(fā)送到客戶端的哪個(gè)路徑下;所述目標(biāo)文件名指文件塊發(fā)送給客戶端后在客戶端上的文件名稱;所述文件大小指未切分前的整個(gè)文件的大小,用于后續(xù)檢驗(yàn)文件的完整性;所述文件分塊數(shù)量只切分的文件塊數(shù)量,實(shí)際等于同一局域網(wǎng)內(nèi)客戶端的數(shù)量;所述各文件塊大小指切分后的各個(gè)文件塊的大小,本發(fā)明使用平均切分,所以實(shí)際上各個(gè)文件塊大小相同。
進(jìn)一步的,客戶端接收到服務(wù)器發(fā)送的客戶端列表信息和文件塊信息后,可以將這些信息以文件的形式保存。
步驟104,所述服務(wù)器根據(jù)文件塊信息將文件塊fi分發(fā)給客戶端ci;其中,i大于等于1小于等于n。
具體的,服務(wù)器根據(jù)文件塊信息中的文件塊目標(biāo)路徑和目標(biāo)文件名,將文件塊fi分發(fā)到客戶端ci對(duì)應(yīng)的路徑,并創(chuàng)建對(duì)應(yīng)的目標(biāo)文件名進(jìn)行保存。
步驟105,客戶端ci根據(jù)客戶端列表信息將接收到的文件塊fi分發(fā)給局域網(wǎng)內(nèi)的其他客戶端。
具體的,客戶端ci根據(jù)客戶端列表信息中的ip地址和端口號(hào)將接收到的文件塊fi、文件塊序號(hào)i和文件塊fi的大小分發(fā)給局域網(wǎng)內(nèi)的其他客戶端,用于其他客戶端判斷文件塊是否全部接收完成。
步驟106,各客戶端根據(jù)文件塊信息將接收到的文件塊f1、f2、…、fn拼接成完整文件,校驗(yàn)文件完整性后通知服務(wù)器。
具體的,各客戶端根據(jù)文件塊信息將接收到的文件塊f1、f2、…、fn拼接成完整文件,校驗(yàn)文件完整性后通知服務(wù)器之前,還可以包括:
各客戶端判斷接收文件塊超時(shí)或接收到的文件塊大小不正確時(shí),通知服務(wù)器直接分發(fā)文件塊或文件。
進(jìn)一步的,各客戶端接收到一個(gè)來(lái)自其他客戶端的文件塊后,根據(jù)文件塊信息判斷所有文件塊是否接收完成,如果接收完成,將接收到的文件塊f1、f2、…、fn拼接成完整文件,校驗(yàn)文件完整性后通知服務(wù)器;否則,等待接收到所有文件塊后再進(jìn)行拼接。
進(jìn)一步的,所述校驗(yàn)文件完整性后通知服務(wù)器,包括:
如果客戶端根據(jù)文件塊信息校驗(yàn)文件大小正確,則發(fā)送消息通知服務(wù)器接收成功。
本發(fā)明一種局域網(wǎng)大文件分發(fā)方法,當(dāng)服務(wù)器有大文件需要分發(fā)給局域網(wǎng)內(nèi)的多個(gè)客戶端時(shí),首先通過(guò)fseek()或seek()函數(shù)對(duì)大文件進(jìn)行虛擬平均切分,然后將切分后的文件塊發(fā)送到對(duì)應(yīng)的客戶端,再由客戶端相互傳送文件塊,所有文件塊接收完成后各客戶端再將文件塊拼接成完整的文件,從而降低了服務(wù)器壓力和提升分發(fā)速度。
一種局域網(wǎng)大文件分發(fā)系統(tǒng),包括:包括服務(wù)器和若干處在同一局域網(wǎng)內(nèi)的客戶端;
所述服務(wù)器,用于維護(hù)客戶端列表信息,并將各客戶端依次編號(hào)為c1、c2、…、cn;將文件虛擬平均切分為n塊,并依次標(biāo)識(shí)為f1、f2、…、fn;將客戶端列表信息和文件塊信息發(fā)給所有客戶端;根據(jù)文件塊信息將文件塊fi分發(fā)給客戶端ci;
所述客戶端,用于根據(jù)客戶端列表信息將接收到的文件塊fi分發(fā)給局域網(wǎng)內(nèi)的其他客戶端;根據(jù)文件塊信息將接收到的文件塊f1、f2、…、fn拼接成完整文件,校驗(yàn)文件完整性后通知服務(wù)器。
進(jìn)一步的,所述客戶端還用于判斷接收文件塊超時(shí)或接收到的文件塊大小不正確時(shí),通知服務(wù)器直接分發(fā)文件塊或文件。
參見(jiàn)圖2所示,本實(shí)施例包括服務(wù)器s,三臺(tái)客戶端c1,c2和c3。服務(wù)器將待分發(fā)文件切換為文件塊f1,f2和f3,并將文件塊f1發(fā)送給客戶端c1,將文件塊f2分發(fā)給客戶端c2,將文件塊f3分發(fā)給客戶端c3。之后,客戶端c1將文件塊f1分別發(fā)送給客戶端c2和c3,客戶端c2將文件塊f2分別發(fā)送給客戶端c1和c3,客戶端及c3將文件塊f3分別發(fā)送給客戶端c1和c2。
更進(jìn)一步的,比如老師通過(guò)服務(wù)器下發(fā)一個(gè)100mb的文件給60個(gè)學(xué)生終端,服務(wù)器將100mb的文件切分為60份下發(fā)給各個(gè)客戶端,服務(wù)器實(shí)際只下發(fā)100mb,假如局域網(wǎng)寬帶為100mbps,服務(wù)器分發(fā)的時(shí)間僅為100mb/100mbps=8s;任一客戶端需要給其他客戶端分發(fā)n-1次,完成整個(gè)分發(fā)過(guò)程總體耗時(shí)略微超過(guò)100mb/100mbps=8s,少于100mb*2/100mbps=16s,時(shí)間遠(yuǎn)遠(yuǎn)少于僅通過(guò)服務(wù)器進(jìn)行分發(fā)的時(shí)間,降低了服務(wù)器壓力和提升分發(fā)速度。
上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚地了解本發(fā)明的技術(shù)手段,從而可依照說(shuō)明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下列舉本發(fā)明的具體實(shí)施方式。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。