论坛首页 编程语言技术论坛

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

浏览 6263 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-08-19   最后修改:2009-06-03
wp7

硬件:

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

软件:

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

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

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

c# 代码
 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Text;  
  7. using System.Windows.Forms;  
  8. using MSRI.SmsService;  
  9. using MSRI.HelperClasses;  
  10. namespace AIRSMS  
  11. {  
  12.     public partial class AIRSMSClient : Form  
  13.     {  
  14.         public SmsServiceClass SmsService = null;  
  15.         public AIRSMSClient()  
  16.         {  
  17.             InitializeComponent();  
  18.             try  
  19.             {  
  20.                 SmsService = new SmsServiceClass("AIRSMS");  
  21.                 SmsService.OnDeliveryReportReceived += new OnDeliveryReportDelegate(SmsService_OnDeliveryReportReceived);  
  22.                 SmsService.OnSmsReceived += new OnSmsReceivedDelegate(SmsService_OnSmsReceived);  
  23.                 // Use SmsService.SendSms(SmsClass Sms) to send a Sms  
  24.             }  
  25.             catch (Exception ex)  
  26.             {  
  27.                 MessageBox.Show(ex.Message);  
  28.                 Application.Exit();  
  29.             }  
  30.         }  
  31.   
  32.         //  
  33.         // Your Code for Processing a received Sms goes here  
  34.         //  
  35.         SmsResponseClass SmsService_OnSmsReceived(SmsClass SmsMessage)  
  36.         {  
  37.             // Compose a Response a list of Response Message and return back the Array Class  
  38.             // Please do not use SmsService.SendSms() Function to send message from this function  
  39.             SmsResponseClass Response = new SmsResponseClass();  
  40.             SmsClass SmsItem = new SmsClass();  
  41.             SmsItem.Body = "Your Response";  
  42.             SmsItem.Number = SmsMessage.Number;  
  43.             Response.AddResponseSms(SmsItem);  
  44.             return Response;  
  45.         }  
  46.   
  47.         //  
  48.         // Your Code for Processing a deliveryreport goes here  
  49.         //  
  50.         void SmsService_OnDeliveryReportReceived(DeliveryReportClass DeliveryReport)  
  51.         {  
  52.             if (DeliveryReport.Status == DeliveryStatusEnum.Sent)  
  53.             {  
  54.                 // Message Sent  
  55.                 Console.WriteLine("msg sent!");  
  56.             }  
  57.             else  
  58.             {  
  59.                 // Message Sent Failed, You may want to retry  
  60.                 Console.WriteLine(DeliveryReport.MessageID + " -- " + DeliveryReport.Status);  
  61.             }  
  62.         }  
  63.     }  
  64. }  

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

c# 代码
 
  1. SmsService = new SmsServiceClass("AIRSMS");    
  2. SmsService.OnDeliveryReportReceived += new OnDeliveryReportDelegate(SmsService_OnDeliveryReportReceived);    
  3. SmsService.OnSmsReceived += new OnSmsReceivedDelegate(SmsService_OnSmsReceived);    

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

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

c# 代码
 
  1. private void btnSend_Click(object sender, EventArgs e)  
  2.         {  
  3.             SmsClass smsMO = new SmsClass();  
  4.             smsMO.Body = txtSMS.Text + " -- dev by Codelicious...";  
  5.             smsMO.Number = "138xxx88999";  
  6.             SmsService.SendSms(smsMO);  
  7.         }  

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

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

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

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

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

   发表时间:2007-08-19  
忘记写了。。。参看文献:
How to Build an SMS Service:
http://www.oreilly.com/catalog/9780596515133/index.html
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics