c 實現檔案傳輸之一 框架結構和介面實現

2021-05-08 02:36:08 字數 2048 閱讀 5100

在木馬中檔案管理的重要性,是無需質疑的,對於檔案的管理,做到並不難,但做好卻也不易在我們編寫乙個功能完整的「檔案木馬」

其實現效果如圖所示。為了文章的完整性,我們將分為數篇來介紹,本文主要介紹程式的整體框架和介面實現,在以後的文章中將以此框架為基礎實現詳細的功能。

編寫環境

程式的編寫環境為vc6.0+windows2000 除介面外的其它部分如,程式框架,功能實現 大多用api實現所以若要移值到其它環境還是比較方便的。

實現目標

傳輸控制結構

要實現客戶端與服務端的通訊,設計乙個合理的傳輸控制結構,會使後面的工作輕鬆很多,為了使**易讀

首先對要使用的命令進行預定義其各個命令定義如下

在程式的網路通訊中主要有 操作命令 ,命令對像,和具體資料三部分,對於命令的傳輸定義如下結構

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 實現檔案傳輸之一 框架結構和介面實現

在木馬中檔案管理的重要性,是無需質疑的,對於檔案的管理,做到並不難,但做好卻也不易在我們編寫乙個功能完整的 檔案木馬 其實現效果如圖所示。為了文章的完整性,我們將分為數篇來介紹,本文主要介紹程式的整體框架和介面實現,在以後的文章中將以此框架為基礎實現詳細的功能。傳輸控制結構 要實現客戶端與服務端的通...

用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...