在木馬中檔案管理的重要性,是無需質疑的,對於檔案的管理,做到並不難,但做好卻也不易在我們編寫乙個功能完整的「檔案木馬」
其實現效果如圖所示。為了文章的完整性,我們將分為數篇來介紹,本文主要介紹程式的整體框架和介面實現,在以後的文章中將以此框架為基礎實現詳細的功能。
傳輸控制結構
要實現客戶端與服務端的通訊,設計乙個合理的傳輸控制結構,會使後面的工作輕鬆很多,為了使**易讀
首先對要使用的命令進行預定義其各個命令定義如下
在程式的網路通訊中主要有 操作命令 ,命令對像,和具體資料三部分,對於命令的傳輸定義如下結構
typedef struct
command;
因為在程式中打交道最多的就是檔案,對檔案的詳細屬性定義如下結構
typedef struct
fileinfo;
服務端結構
服務端還是比較簡單的其整體思路如下
1.服務端迴圈接受連線,並把連線交給執行緒處理
2.執行緒接受"命令資料",並跟據命令id將命令對像和socket控制代碼傳給處理函式
3.函式執行指定功能,並返回執行結果
對整體結構的描述,我們用偽**表述如下
main()
}/*清理釋放資源......*/
wsacleanup();
}服務端程式執行後迴圈接受連線,如果有新的連線就傳遞給新的執行緒處理,執行緒**如下
dword winapi slisen(lpvoid lparam)
else}}
}線程式的功能是接受客戶端的"命令資料",並跟跟據命令id 將命令對像傳遞給處理函式,由函式完成指定的功能
以刪除檔案命令為例其函式格式如下
dword delfileproc (command command,socket client)
else
}很容易看出,處理函式接受"命令對像"和客戶端socket控制代碼,執行後會把結果傳遞回去....
客戶端結構
客戶端結構的實現思路如下
1.跟服務端建立連線
2.傳送使用者命令
3.啟動乙個執行緒,用於接受服務端的返回資訊
對整體結構的描述,我們用偽**表述如下
void cmydlg::onconnect()
createthread(null,null,clisen,this,null,null);//建立執行緒用於接受server返回資訊
}對於使用者傳送的命令我們仍以刪除檔案為例說明其**如下
void cmydlg::onmenudelfile()
用於接受server返回資訊的執行緒,和服務端接受命令執行緒相似,這裡就不再說明了,有興趣可以看下源**
到這裡程式的流程框架就介紹完了,下面我們再看一下程式的介面設定.
介面實現
程式的主介面如上圖所示,主程式是乙個對話方塊,主要包括乙個樹控制項m_tree和列表控制項m_list分別
用於顯示磁碟目錄和檔案,在對話方塊初示化時用以下**設定樹控制項的屬性
dword dwstyle = getwindowlong(m_tree.m_hwnd,gwl_style);
dwstyle |=tvs_hasbuttons | tvs_haslines | tvs_linesatroot;
setwindowlong(m_tree.m_hwnd,gwl_style,dwstyle);
對於列表框控制項則沒有太多要求,要留意的是,如果顯示圖示應該把styles顯示屬性設定為icon
vc的做出的介面,常常讓人有種摔鍵盤的衝動。其實稍微留意一下其設定,也可以讓它漂亮一些
比如上圖所示的介面就是經過簡單設定得到的,而沒有用其它類庫,有點興趣?其設定方法為:
1.在對話方塊屬性中設定styles 的border屬性為thin
2.選重more styles "可見" 屬性
3.選重extended styles的"靜態邊"屬性
這樣再執行一下程式是不是感覺清新不少?
c 實現檔案傳輸之一 框架結構和介面實現
在木馬中檔案管理的重要性,是無需質疑的,對於檔案的管理,做到並不難,但做好卻也不易在我們編寫乙個功能完整的 檔案木馬 其實現效果如圖所示。為了文章的完整性,我們將分為數篇來介紹,本文主要介紹程式的整體框架和介面實現,在以後的文章中將以此框架為基礎實現詳細的功能。編寫環境 程式的編寫環境為vc6.0 ...
用C 實現對FTP伺服器檔案傳輸操作
本篇文章和之前發布的有關sftp的博文都是應用於同乙個專案的。本篇中的源 除測試部分是筆者自己寫出的源 外,其餘的均是在網上蒐集的 本來筆者不想貼出此部分 了,但考慮到之前發布了有關sftp的文章,並且此部分的 寫的也比較優秀。遂思考了幾天下定決心將此部分 貼了出來。class ftphelper ...
用C 實現HTTP協議下的多執行緒檔案傳輸
控制項定義 是 public system.windows.forms.listbox listbox1 private system.windows.forms.label label1 private system.windows.forms.textbox textbox1 private s...