乙個基於socket的資源共享平台的實現(三)

2021-05-22 00:01:07 字數 2213 閱讀 1630

需要共享資源,則需要探測本地資源分布情況。

此處我們用的演算法比較2……不過還是說說吧。

下面使用mfc的cfilefind實現乙個本地檔案遞迴收集器,以jason格式儲存檔案路徑和檔案大小:

然後定期收集,對收集結果md5,若發生變化,則上傳伺服器。

伺服器端使用乙個資料結構維護所有資源站資源,對於使用者的搜尋,我們此處使用最簡單的比較方法,看是否包含子串,此處就不詳加介紹了。

伺服器需要維護log檔案,如下所示:

【2010-01-25 9:0:24】開啟伺服器

【2010-01-25 9:0:31】127.0.0.1登入伺服器

【2010-01-25 9:0:31】127.0.0.1申請搜尋,關鍵字 =

【2010-01-25 9:1:32】127.0.0.1長時間未響應,從伺服器移除

【2010-01-25 9:3:20】開啟伺服器

【2010-01-25 9:3:23】0.0.0.0申請搜尋,關鍵字 =

【2010-01-25 9:3:30】開啟伺服器

【2010-01-25 9:3:34】127.0.0.1登入伺服器

【2010-01-25 9:3:34】127.0.0.1申請搜尋,關鍵字 =

【2010-01-25 9:3:37】0.0.0.0申請搜尋,關鍵字 =

【2010-01-25 9:3:42】0.0.0.0申請搜尋,關鍵字 = 1

【2010-01-25 9:4:14】127.0.0.1申請搜尋,關鍵字 =

【2010-01-25 9:5:19】127.0.0.1廣播訊息:sss

【2010-01-25 9:5:21】127.0.0.1廣播訊息:ahaha

【2010-01-25 9:5:23】127.0.0.1申請搜尋,關鍵字 =

【2010-01-25 9:6:0】127.0.0.1長時間未響應,從伺服器移除

【2010-01-25 9:7:9】127.0.0.1登入伺服器

【2010-01-25 9:7:9】127.0.0.1申請搜尋,關鍵字 =

【2010-01-25 9:7:46】127.0.0.1長時間未響應,從伺服器移除

【2010-01-25 9:9:25】127.0.0.1登入伺服器

【2010-01-25 9:9:26】127.0.0.1申請搜尋,關鍵字 =

【2010-01-25 9:14:39】127.0.0.1登入伺服器

【2010-01-25 9:15:15】127.0.0.1長時間未響應,從伺服器移除

【2010-01-25 9:17:33】127.0.0.1登入伺服器

【2010-01-25 9:17:33】127.0.0.1申請搜尋,關鍵字 =

【2010-01-25 9:17:42】127.0.0.1申請搜尋,關鍵字 =

【2010-01-25 9:18:41】127.0.0.1長時間未響應,從伺服器移除

【2010-01-25 9:19:7】127.0.0.1登入伺服器

【2010-01-25 9:19:8】127.0.0.1申請搜尋,關鍵字 =

【2010-01-25 9:19:45】127.0.0.1長時間未響應,從伺服器移除

【2010-01-25 9:20:6】127.0.0.1登入伺服器

【2010-01-25 9:20:7】127.0.0.1申請搜尋,關鍵字 =

【2010-01-25 9:21:56】127.0.0.1長時間未響應,從伺服器移除

【2010-03-10 14:24:49】開啟伺服器

【2010-03-10 14:25:50】59.175.191.118登入伺服器

【2010-03-10 14:28:18】127.0.0.1登入伺服器

【2010-03-10 14:28:18】127.0.0.1申請搜尋,關鍵字 =

【2010-03-10 14:29:32】系統廣播訊息:test

【2010-03-10 14:29:32】系統廣播訊息:test

【2010-03-10 14:30:44】127.0.0.1長時間未響應,從伺服器移除

【2010-03-10 14:30:53】123.118.15.209登入伺服器

【2010-03-10 14:30:54】123.118.15.209申請搜尋,關鍵字 =

這裡是我的伺服器日誌類。

需要注意的是由於多執行緒寫日誌,需要執行緒互斥訪問log檔案,注意 is_busy 變數。

未完待續……

乙個基於socket的資源共享平台的實現(一)

前段時間和朋友一起做了乙個類似於電驢 迅雷 msn工具的毛坯模型,基本上所有功能都是從socket通訊級別向上實現。整體架構為c s架構,使用mfc實現。技術上都是很老的東西,此文主要介紹類似於 電驢 的這樣乙個軟體的設計思路和部分 框架。我們實現的 不是很優化,僅為設計思路的佐證。我最初做這個小軟...

乙個基於socket的資源共享平台的實現(二)

我們用乙個ns download pool類來封裝對其的管理。接下來我們針對資源傳送過程中限速進行分析和實現。如果需要將傳送速度限制在乙個值,我們可以這麼理解,單位時間內最多允許傳送資料為n,若超過之,就需要降低速度,若不足,則需要提高速度。如何控制速度?這裡我們採用最樸素的方法,sleep,只要將...

乙個基於socket的資源共享平台的實現(四)

現在我們的整個系統基本可用了,還缺少什麼?客戶端自動公升級。所以我們應該要開發乙個loader,客戶端能夠自動檢測更新 公升級,並可以在伺服器端打包公升級流及公升級流資訊下發。在此系統中,我直接是伺服器下發一條公升級資訊 帶版本號 然後與客戶端當前版本號進行配對,若高於客戶端,則開始客戶端更新公升級...