发送手机短信源代码

//发送手机短信源代码(针对国内短信编码)

/////////////////////////////////////

///文 件:PDUdecoding.cs

///概 要:针对国内短信编码(USC2)

///组成结构:包含四个函数:

/// smsDecodedCenterNumber(string srvCenterNumber) 短信中心号编码

/// smsPDUEncoded(string srvContent) 短信内容编码

/// smsDecodedNumber(string srvNumber) 接收短信手机号编码

/// smsDecodedsms(string strCenterNumber, string strNumber, string strSMScontent) 整个短信的编码

/// 一个字段

/// string nLength; //要发送内容的长度,由两部分组成,接收手机号加上要发送的内容

///版 本:1.0.20031020

///用 法:

/// 1,把文件拷贝到你的项目中,添加引用 using SMS;

/// 2,定义本类,例如:PDUdecoding ss = new SMS.PDUdecoding();

/// 3,现在你就可以使用本类了,例如:

/// textBox2.Text = ss.smsDecodedsms(txtCenterNumber.Text,txtNumber.Text,textBox1.Text);

////////////////////////////////////

using System;

using System.Text;

namespace GSM

{

public class PDUdecoding

{

public string nLength; //要发送内容的长度,由两部分组成,接收手机号加上要发送的内容

///

/// 函数功能:短信内容编码

/// 函数名称:smsPDUEncoded(string srvContent)

/// 参 数:srvContent 要进行转换的短信内容,string类型

/// 返 回 值:编码后的短信内容,string类型

/// 函数说明:

/// 1,采用Big-Endian 字节顺序的 Unicode 格式编码,也就说把高低位的互换在这里完成了

/// 2,将转换后的短信内容存进字节数组

/// 3,去掉在进行Unicode格式编码中,两个字节中的"-",例如:00-21,变成0021

/// 4,将整条短信内容的长度除2,保留两位16进制数

///

public string smsPDUEncoded(string srvContent)

{

Encoding encodingUTF = System.Text.Encoding.BigEndianUnicode;

string s = null;

byte [] encodedBytes = encodingUTF.GetBytes(srvContent);

for (int i =0;i

{

s += BitConverter.ToString(encodedBytes,i,1);

}

s = String.Format("{0:X2}{1}",s.Length / 2,s);

return s;

}

///

/// 函数功能:短信中心号编码

/// 函数名称:smsDecodedCenterNumber(string srvCenterNumber)

/// 参 数:srvCenterNumber 要进行转换的短信中心号,string类型

/// 返 回 值:编码后的短信中心号,string类型

/// 函数说明:

/// 1,将奇数位和偶数位交换。

///

2,短信中心号奇偶数交换后,看看长度是否为偶数,如果不是,最后添加F

/// 3,加上短信中心号类型,91为国际化

/// 4,计算编码后的短信中心号长度,并格化成二位的十六进制

///

public string smsDecodedCenterNumber(string srvCenterNumber)

{

string s = null;

int nLength = srvCenterNumber.Length;

for(int i = 1 ; i

{

s += srvCenterNumber[i];

s += srvCenterNumber[i-1];

}

if(!(nLength % 2 == 0)) //是否为偶数,不是就加上F,并对最后一位与加上的F位互换

{

s += 'F';

s += srvCenterNumber[nLength - 1];

}

s = String.Format("91{0}",s); //加上91,代表短信中心类型为国际化

s = String.Format("{0:X2}{1}",s.Length / 2,s); //编码后短信中心号长度,并格式化成二位十六制

return s;

}

///

/// 函数功能:接收短信手机号编码

/// 函数名称:smsDecodedNumber(string srvNumber)

/// 参 数:srvCenterNumber 要进行转换的短信中心号,string类型

/// 返 回 值:编码后的接收短信手机号,string类型

/// 函数说明:

/// 1,检查当前接收手机号是否按标准格式书写,不是,就补上“86”

/// 1,将奇数位和偶数位交换。

/// 2,短信中心号奇偶数交换后,看看长度是否为偶数,如果不是,最后添加F

///

public string smsDecodedNumber(string srvNumber)

{

string s = null;

if (!(srvNumber.Substring(0,2) == "86"))

{

srvNumber = String.Format("86{0}",srvNumber); //检查当前接收手机号是否按标准格式书写,不是,就补上“86”

}

int nLength = srvNumber.Length;

for(int i = 1 ; i

{

s += srvNumber[i];

s += srvNumber[i-1];

}

if(!(nLength % 2 == 0)) //是否为偶数,不是就加上F,并对最后一位与加上的F位互换

{

s += 'F';

s += srvNumber[nLength - 1];

}

return s;

}

///

/// 函数功能:整个短信的编码

/// 函数名称:smsDecodedsms(string strCenterNumber, string strNumber, string strSMScontent)

/// 参 数:strCenterNumber 要进行转换的短信中心号,string类型

/// strNumber 接收手机号码,string类型

/// strSMScontent 短信内容

/// 返 回 值:完整的短信编码,可以在AT指令中执行,string类型

/// 函数说明:

/// 11000D91和000800 在国内

,根据PDU编码原则,我们写死在此,详细解释请看我的文章

///

public string smsDecodedsms(string strCenterNumber, string strNumber, string strSMScontent)

{

string s = String.Format("{0}11000D91{1}000800{2}",smsDecodedCenterNumber(strCenterNumber),smsDecodedNumber(strNumber),smsPDUEncoded(strSMScontent));

nLength =String.Format("{0:D2}", (s.Length - smsDecodedCenterNumber(strCenterNumber).Length) / 2 ); //获取短信内容加上手机号码长度

return s;

}

}

}

//发送手机短信源代码(针对国内短信编码)

/////////////////////////////////////

///文 件:PDUdecoding.cs

///概 要:针对国内短信编码(USC2)

///组成结构:包含四个函数:

/// smsDecodedCenterNumber(string srvCenterNumber) 短信中心号编码

/// smsPDUEncoded(string srvContent) 短信内容编码

/// smsDecodedNumber(string srvNumber) 接收短信手机号编码

/// smsDecodedsms(string strCenterNumber, string strNumber, string strSMScontent) 整个短信的编码

/// 一个字段

/// string nLength; //要发送内容的长度,由两部分组成,接收手机号加上要发送的内容

///版 本:1.0.20031020

///用 法:

/// 1,把文件拷贝到你的项目中,添加引用 using SMS;

/// 2,定义本类,例如:PDUdecoding ss = new SMS.PDUdecoding();

/// 3,现在你就可以使用本类了,例如:

/// textBox2.Text = ss.smsDecodedsms(txtCenterNumber.Text,txtNumber.Text,textBox1.Text);

////////////////////////////////////

using System;

using System.Text;

namespace GSM

{

public class PDUdecoding

{

public string nLength; //要发送内容的长度,由两部分组成,接收手机号加上要发送的内容

///

/// 函数功能:短信内容编码

/// 函数名称:smsPDUEncoded(string srvContent)

/// 参 数:srvContent 要进行转换的短信内容,string类型

/// 返 回 值:编码后的短信内容,string类型

/// 函数说明:

/// 1,采用Big-Endian 字节顺序的 Unicode 格式编码,也就说把高低位的互换在这里完成了

/// 2,将转换后的短信内容存进字节数组

/// 3,去掉在进行Unicode格式编码中,两个字节中的"-",例如:00-21,变成0021

/// 4,将整条短信内容的长度除2,保留两位16进制数

///

public string smsPDUEncoded(string srvContent)

{

Encoding encodingUTF = System.Text.Encoding.BigEndianUnicode;

string s = null;

byte [] encodedBytes = encodingUTF.GetBytes(srvContent);

for (int i =0;i

{

s += BitConverter.ToString(encodedBytes,i,1);

}

s = String.Format("{0:X2}{1}",s.Length / 2,s);

return s;

}

///

/// 函数功能:短信中心号编码

/// 函数名称:smsDecodedCenterNumber(string srvCenterNumber)

/// 参 数:srvCenterNumber 要进行转换的短信中心号,string类型

/// 返 回 值:编码后的短信中心号,string类型

/// 函数说明:

/// 1,将奇数位和偶数位交换。

///

2,短信中心号奇偶数交换后,看看长度是否为偶数,如果不是,最后添加F

/// 3,加上短信中心号类型,91为国际化

/// 4,计算编码后的短信中心号长度,并格化成二位的十六进制

///

public string smsDecodedCenterNumber(string srvCenterNumber)

{

string s = null;

int nLength = srvCenterNumber.Length;

for(int i = 1 ; i

{

s += srvCenterNumber[i];

s += srvCenterNumber[i-1];

}

if(!(nLength % 2 == 0)) //是否为偶数,不是就加上F,并对最后一位与加上的F位互换

{

s += 'F';

s += srvCenterNumber[nLength - 1];

}

s = String.Format("91{0}",s); //加上91,代表短信中心类型为国际化

s = String.Format("{0:X2}{1}",s.Length / 2,s); //编码后短信中心号长度,并格式化成二位十六制

return s;

}

///

/// 函数功能:接收短信手机号编码

/// 函数名称:smsDecodedNumber(string srvNumber)

/// 参 数:srvCenterNumber 要进行转换的短信中心号,string类型

/// 返 回 值:编码后的接收短信手机号,string类型

/// 函数说明:

/// 1,检查当前接收手机号是否按标准格式书写,不是,就补上“86”

/// 1,将奇数位和偶数位交换。

/// 2,短信中心号奇偶数交换后,看看长度是否为偶数,如果不是,最后添加F

///

public string smsDecodedNumber(string srvNumber)

{

string s = null;

if (!(srvNumber.Substring(0,2) == "86"))

{

srvNumber = String.Format("86{0}",srvNumber); //检查当前接收手机号是否按标准格式书写,不是,就补上“86”

}

int nLength = srvNumber.Length;

for(int i = 1 ; i

{

s += srvNumber[i];

s += srvNumber[i-1];

}

if(!(nLength % 2 == 0)) //是否为偶数,不是就加上F,并对最后一位与加上的F位互换

{

s += 'F';

s += srvNumber[nLength - 1];

}

return s;

}

///

/// 函数功能:整个短信的编码

/// 函数名称:smsDecodedsms(string strCenterNumber, string strNumber, string strSMScontent)

/// 参 数:strCenterNumber 要进行转换的短信中心号,string类型

/// strNumber 接收手机号码,string类型

/// strSMScontent 短信内容

/// 返 回 值:完整的短信编码,可以在AT指令中执行,string类型

/// 函数说明:

/// 11000D91和000800 在国内

,根据PDU编码原则,我们写死在此,详细解释请看我的文章

///

public string smsDecodedsms(string strCenterNumber, string strNumber, string strSMScontent)

{

string s = String.Format("{0}11000D91{1}000800{2}",smsDecodedCenterNumber(strCenterNumber),smsDecodedNumber(strNumber),smsPDUEncoded(strSMScontent));

nLength =String.Format("{0:D2}", (s.Length - smsDecodedCenterNumber(strCenterNumber).Length) / 2 ); //获取短信内容加上手机号码长度

return s;

}

}

}


相关文章

  • 移动最新免费qq刷钻代码 教你怎么刷钻的教程大全|QQ刷钻
  • 移动最新免费qq刷钻代码 教你怎么刷钻的教程大全 酷讯综合社区提供分享移动联通免费刷钻教程,本教程由网友上传,若社区未能及时更新,请在百度上搜 索手机QQ刷钻教程. [会员开通邦定代码] 1.qq会员(手机会员专区)15元/月 开通发50到 ...查看


  • 联通短信定购流程 .
  • 联通短信定购流程 目前,联通短信定购流程如下: 第一步 用户上行 用户按照要求书写信息内容并提交到指定号码. 例如:用户填写3611发送到9929. 第二步 联通验证 联通检查用户上行信息,并匹配业务代码.如果匹配成功,联通将会直接将该业务 ...查看


  • 陕西电信企信通短信收发接口说明
  • 陕西电信企信通短信收发接口说明 陕西电信信息产业分公司 技术负责人:徐工 电话:029-88329727 (仅限企信通用户使用,不得转发) 目 录 一.接口说明: ...................................... ...查看


  • Andriod平台病毒危害及其预防
  • COMPUTINGSECURITYTECHNIQUES 计算机安全技术 Andriod平台病毒危害及其预防 王运生1,2,聂芬2 (1.山西水利职业技术学院信息工程系,山西运城044000:2.中北大学信号与通信工程学院,太原030051) ...查看


  • 手机短信,这样退订 - 都市闲情 - 517论坛(旅游生活休闲)
  • 手机短信,这样退订 移动用户短信退订方法: 1).编辑短信"0000"发送到SP服务代码或者186201(186202.186203),系统返回你订制的梦网业务列表,可查询已订制的梦网业务,如果发现有不需要的业务,回复& ...查看


  • CDMA工作原理
  • CDMA工作原理 CDMA(码分多址)是以分组的形式广播您的通话的,但与TDMA(时分多址)不同的是,所有通话均在同一信道上传递,它通过指定给各个对话的特殊代码来区分每个对话.当您使用CDMA 电话时,它实际上接收了在您所使用的网络上传输的 ...查看


  • Android发短信
  • Android 发短信 设置界面 1. 收信人 2. 输入收信人的号码框 3. 输入内容 4. 发送按钮 5. 信息文本框 --- 源代码 1. 显示视图 public void onCreate(Bundle savedInstanceS ...查看


  • 中国电信国际漫游使用说明
  • 国际漫游使用说明 3.1.1. CtoC 国际漫游业务 3.1.1.1. 业务开通范围 目前中国电信已与多个国家和地区开通 CDMA 国际漫游业务,包括:美国. 关岛.日本.韩国.加拿大.澳门.以色列.印度尼西亚.巴西.新西兰.泰国. 香港 ...查看


  • 简单聊天系统的设计与实现
  • JISHOU UNIVERSITY 专业课课程论文 题 目: 作 者: 学 号: 所属学院: 专业班级: 总 评 分: 完成时间: 简单聊天系统的设计与实现 信息科学与工程学院 吉首大学信息科学与工程学院 简单聊天系统的设计与实现 (吉首大 ...查看


热门内容