昊仔

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

小问号:蒋老师,SOS!紧急救援!

蒋老师:什么事,慢慢说。  

 

小问号:您不知道,前几天我们公司来了一个客户,希望我们为他们公司做一个基于短信的移动办公系统,并且起了一个好听的名字“企业助手”。具体功能包括:工作(会议)通知、事务提醒、工资发放、生日祝福、短信调查等功能。

BOSS说:“这个小项目就交给你了,知道你虽然刚走出校门,但我相信你的能力和我的眼力,别让我失望噢!”

我很心虚地拍着胸脯说:“BOSS放心,保证完成任务!”。

蒋老师:嗯,不是很复杂,应该能够完成,有什么需要我帮忙的呢?

 

小问号:本来真的不想打扰您,知道您很忙,但我问了一下公司的两个老技术员,很虚心的请教了他们,但他们也从来没有接触过短信这块,他们都说很简单,但是我却不知从哪下手,有劲用不上啊!又不好意思给老板说我不懂,第一个小项目都搞不定,不是想走人吗?

蒋老师:好吧,我们从零开始!

 

小问号:就喜欢这样,谁让我是个菜鸟呢?最多知道点语法而已。

蒋老师:放心吧,这就是一层窗户纸,一捅就破!

 

小问号:真的帮我搞定了,第一个月发了工资第一件事去请您老吃饭!

蒋老师:心意领了,少来,快开始吧!

 

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

 

十分同情小问号这样的菜鸟,我们每个人都有第一次,对于小问号来说,第一次上班,第一次开始参加实战(而不是演习),我义无反顾地帮助他完成一系列的指导:

 

第一个案例:实时单发

第二个案例:实时群发

第三个案例:定时发送短信

第四个案例:同一部门可选择发送

第五个案例:不同部门可选择发送

大结局:企业助手完整实现

 

如果你和小问号一样属于菜鸟(高手绕过),让我们一起乘坐“奋斗”号之舟,完成这次波澜不惊的短途旅行!

特别说明,你至少具备的基础:

·了解C#语言并且熟悉VS2005/VS2008等操作环境。

·了解SQL SERVER2005常用操作。

 

我们知道短信的应用实际上已经遍布各个角落(“警务通”、“校信通”、“农信通”、“银信通”等已经大量成功应用,其中“校信通”尤为成功),但对于不少在校大学生来说短信究竟是如何发送的,可能仍然是陌生的。

 

所以该教程一方面让大学生有机会了解短信这个基本知识技能,同时又可以作为入门级别独自都能战斗(尽管个人英雄时代已经过去,但是单兵作战训练永远都会存在!我们提倡团队协作,个人能力也至关重要!)的第一个学习案例,为后续的团队合作的中型项目打下一个良好基础。

 

本次系列教程将以每周两篇的形式连载!

 

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

 

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

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

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

//发送短信函数 [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); 使用.NET从零开始打造短信应用系统之一、二 功能:根据指定的手机号码和内容发送短信。

//退出登录 [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

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

posted on 2013-08-12 10:23  昊仔  阅读(354)  评论(0编辑  收藏  举报