如何用windows mobile构建你自己的SMS服务器 - 基础篇

staru 2012-01-17
硬件:

    Windows Mobile 5或者6的智能电话一部
    可以发送短信息的SIM卡一张(路人甲:废话! me:  -。-# 偶只想说详细点怒。。。)
    电脑一台(路人乙:靠!正经点!   me: -。-!哦~~!)
    连接手机和电脑的USB连接线一根
    另外一台手机接收信息

软件:

    Windows XP SP2 或者 Windows Vista
    .NET Framework 2.0
    SQL Server 2005 Compact Edition (免费的)
    ActiveSync 4.0+
    MS India 研发中心开发的SMS toolkit
    直接下载地址: research.microsoft.com/research/downloads/details/2bdeb3c6-9945-4804-a9bc-0d53704d35da/details.aspx
    Visual Studio 2005

按缺省值安装。。。(路人丙: NND!这么多东西啊! me: 微软怒。。。-。-#。。。

接下来打开VS,可以发现有个新的项目类型: SMS Service

建立新项目AIRSMS(为什么取这个名字哦?O.o 保密。。。)
生成的Form1.cs中包括了所有的boiler-plate代码。
c# 代码


    using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Text; 
    using System.Windows.Forms; 
    using MSRI.SmsService; 
    using MSRI.HelperClasses; 
    namespace AIRSMS 
    { 
        public partial class AIRSMSClient : Form 
        { 
            public SmsServiceClass SmsService = null; 
            public AIRSMSClient() 
            { 
                InitializeComponent(); 
                try 
                { 
                    SmsService = new SmsServiceClass("AIRSMS"); 
                    SmsService.OnDeliveryReportReceived += new OnDeliveryReportDelegate(SmsService_OnDeliveryReportReceived); 
                    SmsService.OnSmsReceived += new OnSmsReceivedDelegate(SmsService_OnSmsReceived); 
                    // Use SmsService.SendSms(SmsClass Sms) to send a Sms 
                } 
                catch (Exception ex) 
                { 
                    MessageBox.Show(ex.Message); 
                    Application.Exit(); 
                } 
            } 
     
            // 
            // Your Code for Processing a received Sms goes here 
            // 
            SmsResponseClass SmsService_OnSmsReceived(SmsClass SmsMessage) 
            { 
                // Compose a Response a list of Response Message and return back the Array Class 
                // Please do not use SmsService.SendSms() Function to send message from this function 
                SmsResponseClass Response = new SmsResponseClass(); 
                SmsClass SmsItem = new SmsClass(); 
                SmsItem.Body = "Your Response"; 
                SmsItem.Number = SmsMessage.Number; 
                Response.AddResponseSms(SmsItem); 
                return Response; 
            } 
     
            // 
            // Your Code for Processing a deliveryreport goes here 
            // 
            void SmsService_OnDeliveryReportReceived(DeliveryReportClass DeliveryReport) 
            { 
                if (DeliveryReport.Status == DeliveryStatusEnum.Sent) 
                { 
                    // Message Sent 
                    Console.WriteLine("msg sent!"); 
                } 
                else 
                { 
                    // Message Sent Failed, You may want to retry 
                    Console.WriteLine(DeliveryReport.MessageID + " -- " + DeliveryReport.Status); 
                } 
            } 
        } 
    } 

SmsService_OnSmsReceived 是处理收到短信息的时候的method
SmsService_OnDeliveryReportReceived 是处理发送成功后的method
c# 代码


    SmsService = new SmsServiceClass("AIRSMS");   
    SmsService.OnDeliveryReportReceived += new OnDeliveryReportDelegate(SmsService_OnDeliveryReportReceived);   
    SmsService.OnSmsReceived += new OnSmsReceivedDelegate(SmsService_OnSmsReceived);   

这里是设置这些事件的delegate。

现在在Form1的设计模式中,拖进一个textbox (txtSMS)和一个button。在button的click事件的时候我们发送textbox里面的txt到指定的手机号码:
c# 代码


    private void btnSend_Click(object sender, EventArgs e) 
            { 
                SmsClass smsMO = new SmsClass(); 
                smsMO.Body = txtSMS.Text + " -- dev by Codelicious..."; 
                smsMO.Number = "138xxx88999"; 
                SmsService.SendSms(smsMO); 
            } 

路人丁: 好牛X的手机号码啊。。。卖不? me:-。-# 不是偶滴号码。。。纯test用。。。

这里就把txtSMS的text发到指定的手机号码了。 “ -- dev by Codelicious...” 是另外加的信息, 可以是广告什么的, 嘿嘿!

运行。。。 然后输入你的信息。。。 然后按button, 嘿, 很快另外那台手机就收到sms了。

当然, 这是第一步, 还有很多功能可以增加, 比如validation,msg历史等等。。。

P.S. 放到flex圈里是有原因的, 接下来的几篇看了就知道了。。。(当然是如果能成功的话。。。^O^//)
Global site tag (gtag.js) - Google Analytics