[FileZilla Server] 加載的驗證 DLL

在上一篇文章我有提到我利用自己撰寫的 dll 來驗證帳號及密碼
那這篇文章就是介紹我倒底是如何進行撰寫的

我使用平台是 Visual Studio 2010 ,先在 Visual C++ 裡選擇 Win32
在右邊有Win32主控台應用程式,在應用程式設定裡選擇 DLL
那為了快速就開發出來,我偷偷透過 CLR 方式來使用

就是可以直接使用 .Net 有的東西,不過這東西就期望效能,比較多的是笑能
正道還是透過撰寫 WinSocket 的程式來進行資料傳輸和判斷吧

如何設置 CLR 呢?在該專案的屬性頁中找到[組態屬性]->[一般],右邊的 Common Language Runtime 支援 下拉成 Common Language Runtime 支援 (/clr) 即可
接下來則到 通用屬性 中把你有使用到的 .Net 參考給加進去,以我今天要示範的程式為例,會有
System
System.Net
System.Web
三個參考需被加入
而在 header (.h) 檔中加入以下句子
extern "C" __declspec(dllexport) bool VerifyByDiscuz(const char* uid, const char* pw);

而之後在 cpp 檔加入以下的程式碼
__declspec(dllexport) bool VerifyByDiscuz(const char* account, const char* password)
{
 String^ s_account = gcnew String(account);
 String^ s_password = gcnew String(password);
 String^ InfoAddress = String::Format("http://localhost/myverify.php?account={0}&md5_password={1}", s_account, s_password);
 StreamReader^ sr = nullptr;
 try
 {

  WebClient^ wc = gcnew WebClient();
  sr = gcnew StreamReader(wc->OpenRead(InfoAddress), Encoding::ASCII);
  String^ buffer = sr->ReadToEnd();
  if (buffer == "ok")
   return true;
 }
 catch (Exception^)
 {
 }
 finally
 {
  if (sr != nullptr)
   sr->Close();
 }
 return false;
}

我裡面主要是透過 WebClient 進行網頁的連線並取回結果

留言

這個網誌中的熱門文章

DB 資料庫呈現復原中

Outlook 刪除大量重覆信件

[VB.Net] If vs IIf ,兩者的差異