如何用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^//) |