使用.NET从零开始打造短信应用系统之二

使用.NET从零开始打造短信应用系统之二

——第一个案例:实时单发
(蒋惠全 魏智勇)

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

小问号:蒋老师,昨天我按您传授的方法给客户演示了企业助手“仿真系统”(蒋老师获创的名字,也就是把客户的需求用界面表示出来)。客户惊呆了,说这么快就好了,你太厉害了,当我告诉他这只是装饰效果图,尽管他表现的有一丁点失望,但随后还是很满意地告诉我说:“这个好,这个好,不像我们上一次找的一个公司开发的那个东西,他们最后出来的系统和我们想象的差别太大了!”。他还说,怎么看起来和真的一样呢!
之后我和客户讨论之后,稍微作了一些修改,他们表示很满意!
要是能有一个演示把短信直接发到客户的手机上,一定帅呆了!
蒋老师:这一步你做的很好,我们除了文档,这一步其实很重要,否则客户和我们谈得可能很融洽,似乎都明白了对方的意思,但实现出来的结果往往大相径庭,那样麻烦就大了!这也是需求分析的一个步骤,这个我们以后再谈(作为读者的你,有兴趣的话可以参考部分项目管理和软件工程,但建议你有2-3个项目实战经验再去深入研究,否则容易犯纸上谈兵大忌)!  

小问号:蒋老师,快点开始吧,我都有点迫不及待了!我还是着急如何把短信发出去!
蒋老师:好的!别太着急,你老是急性子,我们了解一下发送短可能的方式:(1)通过移动或者联通端口发送,一般难以申请,每个月而且近似海量才有申请的必要性,开发相对有一定的难度;(2)通过完成短信发送,这个倒也简单易行,设备价格几百元不等,开发起来难度也不大;(3)通过第三方短信运营商,他们一般提供了插件或者动态链接库,发送速度(每秒钟吞吐量)比要快,开发难度与要当。

小问号:那这个小项目用哪种方式呢?
蒋老师:第一种不太现实!第二种和第三种都可以,建议你采用第三种!

小问号:那就用第三种,今天我能学会发送吗?我这菜鸟能搞定吗?一个树形权限菜单授权我还搞了三天呢!
蒋老师:放心了,五分钟实现你的你一个愿望!

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

我们第一个案例非常简单,界面部分显示两个文本框,一个用来输入手机号码,一个用来输入短信内容。
这个案例中唯一难点就是你要熟悉C#如何调用DLL动态链接库文件,熟悉发送短信的函数。

第一步:复制所需要的MSDP.dll文件到系统目录中。
请把“MSDP.dll”文件复制到“C:/WINDOWS/system32文件夹下。
“MSDP.dll”文件下载地址:MSDP.dll
MSDP.jpg

第二步:使用VS2005创建一个WEB项目
sms_0200.jpg
选择:创建“网站(W)…”。
sms_0201.jpg
语言选择:C#
位置:Http://localhost/sms

第三步:添加Simple文件
sms_0202.jpg
添加页面文件:Simple.aspx与代码文件:Simple.aspx.cs

第四步:实现实时单发
sms_0203.jpg
请在手机号码位置输入您的11位手机号码,内容处输入70字以内的内容,然后点击“发送”按钮。
在实验中请节约发送短信条数,限发两条。(扣的都是蒋老师的钱噢)

代码重点讲解:
对于Simple.aspx页面文件由于只包含了两个标签、两个文本框和一个发送按钮,不再详细讲解,具体参考代码。
着重讲解一下Simple.aspx.cs中的代码部分。

  1. using System.Runtime.InteropServices;

引用该命名空间是保证正确引用MSDP.DLL动态链接库与函数的前提。如果你对本命名空间不熟悉请参考:http://msdn.microsoft.com/zh-cn/library/system.runtime.interopservices.aspx

  1. 调用三个重要函数

//初始化登录
[DllImport("msdp.dll")]
private static extern int SkInit(string AHost, string AUser, string APass, int AProxyMode, string AProxyHost, int AProxyPort, string AProxyUser, string AProxyPass);
sms_02_clip_image008.jpg

功能:初始化与服务器建立连接,需要向服务器提交带有账号和密码的信息,只有通过验证后才可以有效的进行以发送短信等操作。
注意:一次验证后此连接将保持登录状态,随后的发送短信等命令不需要提供身份验证,直至到退出登录,重新连接后需要重新登录。

//发送短信函数
[DllImport("msdp.dll")]
private static extern int SkMultiSend(int AContentType, string ATime, string AExNo, string AMobileList, string AMsg, byte[] ASuccessList, byte[] AFailureList, out int ASuccBufSize, out int AFailBufSize);
sms_02_clip_image010.jpg
功能:根据指定的手机号码和内容发送短信。

//退出登录
[DllImport("msdp.dll")]
private static extern int SkLogout();
功能:退出,释放资源。

  1. 发送短信代码

protected void btnSend_Click(object sender, EventArgs e)
{
//获取手机号码与短信内容
string cSendPhoneNum = tbPhoneNum.Text.Trim();
string cSendContent = tbContent.Text.Trim();

//返回发送成功的手机列表
byte[] bSuccess = new byte[cSendPhoneNum.Length];

//返回发送失败的手机列表
byte[] bFailure = new byte[cSendPhoneNum.Length];

//返回发送成功的条数
int iSuc = 0;

//返回发送失败的条数
int iFail = 0;

//初始化登录
int iInit = SkInit("se1.china-sms.com:9900;se2.china-sms.com:9900;se3.china-sms.com:9900;
se5.china-sms.com:9900", "mrjiang", "123456", 0, "0", 0, "", "");

//初始化iInit返回值为0表示初始化成功,发送短信
if(iInit==0)
SkMultiSend(101, System.DateTime.Now.ToString(), "", cSendPhoneNum, cSendContent, bSuccess, bFailure, out iSuc, out iFail);

//退出
SkLogout();
}

代码下载:sms.rar

小问号:哇,太棒了,真的收到短信耶!
蒋老师:好,先看看,然后试试,动手自己做出来才是最重要的,明天我告诉你群发!

  (在我的任何一篇教程中,永远采用的是“抛我砖,引你玉”方针,希望高手批评指导,更迫切希望你仍然站在初学者的角度,让我们一起来帮助菜鸟,谢谢!)

上一篇:使用.NET从零开始打造短信应用系统之一 下一篇:使用.NET从零开始打造短信应用系统之三

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值