1、短信中心地址长度:包括‘91’和‘F’(单位:字节)
2、短信中心地址类型:国际格式‘91’
3、短信中心地址SCA:前面要加‘86’,补‘F’凑成偶数
4、信息头字节:发:‘11’正常发送、‘31’需要状态报告、‘51’有报头短信
收:TP-RP TP-UDHI TP-SRR TP-VPF[2] TP-RD TP-MTI[2]
5、消息基准值TP-MR:发:‘00’
收:无
6、目标号码长度:不包括‘91’和‘F’(单位:位数)
7、目标号码格式:国际格式‘91’
8、目标号码TPA:前面要加‘86’,补‘F’凑成偶数
9、协议标识TP-PID:‘00’
10、用户信息编码方式TP-DCS:‘00’7-bit、‘08’UCS2、‘15’8-bit(‘F5’UTF-8)(bit4=1闪信)
11、有效期TP-VP:发:‘00’-‘8F’,(VP+1)*5分钟
收:时间戳TP-SCTS,14位
12、信息长度TP-UDL:7-bit编码:指原始短消息的字符个数;8-bit、UCS2编码:指编码后字节数;有信息头:等于头长度与编码后字节数之和。
13、[0]信息头总长度:各个IE长度总和
14、[2]Information Element Identifier:‘05’表示WAP PUSH
15、[2]Information Element Length:‘04’
16、[2]Destination Port:‘0B84’
17、[2]Originating Port:‘23F0’
18、[1]Information Element Identifier:‘00’表示长短信,8-bit reference number;‘08’表示长短信,16-bit reference number;(对于7-bit编码超长短信,协议头要凑够7位长度)
19、[1]Information Element Length:‘03’
20、[1]Reference Number
21、[1]Total Packet
22、[1]Current Packet
23、[2]WSP Header:‘29060603AE81EA8DCA’
24、[2]XML固定格式:‘02056A0045C6080C03’
25、[2]URL:不带http://
26、[2]XML固定格式:‘000103’
27、内容
28、[2]XML固定格式:‘000101’
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace Sms
{
enum PduEncoding { Bit7 = 1, UCS2 = 2, UTF8 = 3 }
class SmParam
{
public byte totalPacket = 1;
public byte currentPacket = 1;
public string fromNumber = "";
public string sendTime = "";
public string url = "";
public string msgContent = "";
public PduEncoding encoding = PduEncoding.Bit7;
override public string ToString()
{
string str = String.Format("[{0}]{1}:", sendTime, fromNumber);
if (totalPacket > 1)
{
str = String.Format("{0}{1}/{2}", str, currentPacket, totalPacket);
}
if (url.Length > 0)
{
str = String.Format("{0}<{1}>", str, url);
}
str = String.Format("{0}{1}", str, msgContent);
return str;
}
}
class SmsPdu
{
private string InvertNumbers(string num)
{
string str = "";
if (num.Length > 0)
{
num = "86" + num;
if (num.Length % 2 != 0)
{
num = num + "F";
}
for (int i = 0; i < num.Length; i += 2)
{
str += num[i + 1];
str += num[i];
}
str = "91" + str;
}
return str;
}
private string SerializeNumbers(string num)
{
string str = "";
if (num.Length > 0)
{
for (int i = 0; i < num.Length; i += 2)
{
str += num[i + 1];
str += num[i];
}
if (str.StartsWith("86"))
{
str = str.Remove(0, 2);
}
if (str.EndsWith("F"))
{
str = str.Remove(str.Length - 1);
}
}
return str;
}
private string SerializeSendTime(string time)
{
string str = "";
for (int i = 0; i < time.Length; i += 2)
{
str += time[i + 1];
str += time[i];
}
string year = str.Substring(0, 2);
string mon = str.Substring(2, 2);
string date = str.Substring(4, 2);
string hour = str.Substring(6, 2);
string min = str.Substring(8, 2);
string sec = str.Substring(10, 2);
return String.Format("{0}-{1}-{2} {3}:{4}:{5}", year, mon, date, hour, min, sec);
}
public string EncodeUCS2(string message)
{
string str = "";
//byte[] buf = Encoding.BigEndianUnicode.GetBytes(message);
//for (int i
SMS PDU编码
最新推荐文章于 2024-07-19 07:30:00 发布