目前已經有 C# 版的飛信 SDK,功能很強大,但佔用資源也很多。由於現在開源的 SDK 是透過反編譯飛信而編寫的,所以其所佔用的記憶體在 30MB 左右,檔案也比較大,在程式中使用很不方便,尤其是在 ASP.NET 中。
看到網上有幾個開源的飛信,有 PHP 的,也有 Python 的,還有人用 Java 寫了一個,不過不開源,也有在網站上提供 API。最近 Google 的 GAE 比較火,也有人在 GAE 上提供一個飛信的 API,可惜不開源。另外還有人提供了一個 Delphi 版本的飛信,也是開源的。還不得不提的就是用 C++ 寫的 libfetion,不但不開源,Windows 下的庫也不提供,我到 Linux 下也沒 build 成功,可能是因為我太菜了。
既然別人能用 PHP 或 Python 實現,那我也能用 C++ 或 C# 實現了,所以我就試著用 C++ 實現,不過自己太菜,C++ 學得不好,所以一直沒有實現出來。後來想想用 C# 是不是很簡單呢?所以就用開始著手考慮用 C# 實現,首先我想參照 Python 寫的那個程式來實現,最後發現實現起來非常費勁,所以就拉到了,不過自己一直想自己實現了。
這次五一正好忙裡偷閒,實現了一個,現在暫時實現了登陸和登出,以及發送簡訊的功能。由於上次自己好不容易寫了一個東西,結果一堆人跑來說這不行、那不行的,我就悶了,所以這次打算先不開源了,看大家的反應,如果反應好的話,我會考慮開源的。
在此聲明一下,本程式僅供學習和研究使用,切勿用於非法用途,使用此程式產生的一切法律後果與本人無關。本人主要是參考 PHP 版飛信中的飛信協定,未對飛信的原有協定做任何更改。
下面簡單說一下該 DLL 的使用,首先 using com.dlut.ssdut.zucky.DotNetFetion;,然後 Fetion fetion = new Fetion("手機號", "飛信密碼"); fetion.Login(); fetion.SendSMSToPhone("要發送給的手機號", "要發送的信息。"); fetion.Logout();
DLL 下載中注意該 DLL 經過了加密。
下面說說我實現該程式時遇到的難點,第一個就是編碼的問題,最後我發現該協定中應用的都是 UTF-8 編碼,另外一個要注意的地方是協定中長度資訊,指的是用 UTF-8 編碼後 byte 的數目。