构建你自己的SMS服务器

构建你自己的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连接线一根
  • 另外一台手机接收信息
软件
按缺省值安装。。。(

接下来打开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.         }  

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

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

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

    P.S. 放到flex圈里是有原因的, 接下来的几篇看了就知道了。。。(当然是如果能成功的话。。。^O^//)
 
03-28
本系统是支持短信业务的应用服务器软件(类似tomcat),按照servlet规范开发而成,具有良好的扩展性和夸平台性。具有Session功能,各产品的 session可设置单独的超时时间,业务适应范围相当广泛,例如:包月群发类、媒体互动类、游戏互动类、聊天类等等。系统具有一套定义良好的接口,用户可以灵活扩展,各系统模块的加载完全由配置来决定,当加入新的模块时只需修改配置文件即可,系统支持web模块,web模块由配置文件来决定是否被加载,当web模块被加载后,所有遵循servlet规范的web系统都可以在本系统中被加载,例如系统的后来管理用的就是内置的web容器。系统支持JMX的管理方式,jmx客户端都可以通过系统端口连接系统,以便对系统进行动态管理。由于系统是一个标准的servlet容器,消息的请求与应答都是标准的 ServletRequest和ServletResponse,为了能和各种短信网关(或短信平台)进行对接,系统的连接模块做了高度抽象,完全和实现脱离,所以扩展相当方便,产品开发人员完全不用理会通讯的内部细节和消息结构细节,只要专注与业务逻辑的实现就可以了。产品的开发也相当简单,如果会一点 web的话更是得心应手,开发方式和web开发完全相同。系统采用对象池技术,当产品处于非活动状态时会被系统自动清除,当有新的请求时产品会被重新加载,使系统资源得到有效的利用,也可以通过优化系统参数来优化系统的性能,即使面对高强度的消息请求系统优秀的缓冲技术可以保证系统不会崩溃。 web site:http://www.31010.cn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值