构建你自己的SMS服务器作者:佚名 文章来源:转载 <script language="javascript" src="/baidu.js" type="text/javascript"></script> <script language="JavaScript" type="text/javascript">cpro_client='gootsly_cpr';cpro_template='text_default_500_200';cpro_h=200; cpro_w=500;cpro_flush=4;cpro_cbd='#trans';cpro_cbg='#trans';cpro_ctitle='#0000ff';cpro_cdesc='#000000';cpro_curl='#FFFFFF';cpro_clink='#ffffff';</script> <script language="JavaScript" src="http://cpro.baidu.com/cpro/ui/cp.js" type="text/javascript"></script> - 硬件: 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 研发中心开发的smstoolkit">SMS toolkit 直接下载地址: research.microsoft.com/research/downloads/details/2bdeb3c6-9945-4804-a9bc-0d53704d35da/details.aspx Visual Studio 2005 按缺省值安装。。。(接下来打开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 是处理收到短信息的时候的methodSmsService_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); } 这里就把txtSMS的text发到指定的手机号码了。 “ -- dev by Codelicious...” 是另外加的信息, 可以是广告什么的, 嘿嘿!运行。。。 然后输入你的信息。。。 然后按button, 嘿, 很快另外那台手机就收到sms了。当然, 这是第一步, 还有很多功能可以增加, 比如validation,msg历史等等。。。P.S. 放到flex圈里是有原因的, 接下来的几篇看了就知道了。。。(当然是如果能成功的话。。。^O^//)