sim卡中短信简要格式

 

//SELECT

A0 A4 00 00 02 3F 00

9F 17

//A0 A4 00 00 02 是命令头,CLA = A0表示GSM应用,INS = A4 表示SELECT,P1 P2 = 00 00 是参数,P3 = 02 是数据的长度(或返回数据的长度)表示( 2 )

//选择文件,选中文件为3F 00 代表MF

//9F 17 是返回状态,表示---成功,有23 个字节的信息等待GET RESPONSE

 

//SELECT

A0 A4 00 00 02 7F 10

9F 17

//A0 A4 00 00 02 是命令头,CLA = A0表示GSM应用,INS = A4 表示SELECT,P1 P2 = 00 00 是参数,P3 = 02 是数据的长度(或返回数据的长度)表示( 2 )

//选择文件,选中文件为7F 10 代表TELECOM

//9F 17 是返回状态,表示---成功,有23 个字节的信息等待GET RESPONSE

 

//SELECT

A0 A4 00 00 02 6F 3C

9F 0F

//A0 A4 00 00 02 是命令头,CLA = A0表示GSM应用,INS = A4 表示SELECT,P1 P2 = 00 00 是参数,P3 = 02 是数据的长度(或返回数据的长度)表示( 2 )

//选择文件,选中文件为6F 3C 代表SMS[CDMA-SMS]

//9F 0F 是返回状态,表示---成功,有15 个字节的信息等待GET RESPONSE

 

//GET RESPONSE

A0 C0 00 00 0F

00 00 22 60 6F 3C 04 00 00 FF 44 01 02 01 B0

90 00

//A0 C0 00 00 0F 是命令头,CLA = A0表示GSM应用,INS = C0 表示GET RESPONSE,P1 P2 = 00 00 是参数,P3 = 0F 是数据的长度(或返回数据的长度)表示( 15 )

//返回数据见上,其中

//--00 00 保留

//--22 60 占用的空间大小,表示8800字节

//--6F 3C 选中File的ID

//--04 选中文件的类型,01-MF, 02-DF, 04-EF

//--00 见11.11 9.2.1 detail 3

//--00 FF 44 访问权限

//--01 文件状态,见11.11 9.3

//--02 后面数据的长度,表示2

//----01 文件结构,见11.11 9.3

//----B0 记录长度,见11.11 9.2.1 detail 4

//90 00 是返回状态,表示---成功

 

//READ RECORD

A0 B2 01 04 B0

03 08 91 68 31 08 10 00 05 F0 04 05 81 21 43 F5 00 08 80 40 02 81 10 90 80 18 4E 2D 65 87 77 ED 4F E1 FF 0C 00 63 00 68 00 69 00 6E 00 65 00 73 00 65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00

90 00

//A0 B2 01 04 B0 是命令头,CLA = A0表示GSM应用,INS = B2 表示READ RECORD,P1 P2 = 01 04 是参数,P3 = B0 是数据的长度(或返回数据的长度)表示( 176 )

//读记录,P2 = 04 表示绝对记录号,P1 = 01 为记录号,表示第1 条记录P3 = B0 表示后面的数据长度为176

//--收到的短信,未读

//----08 91 68 31 08 10 00 05 F0 是短信中心号码,表示+8613800100500

//--------------------TON-NPI------------开始

//----91 TON-NPI( 1 0 0 1 0 0 0 1 ),表示

//------bit7为 1

//------bit6, bit5, bit4是TON(type-of-number),值为 0 0 1 ,表示International number

//------bit3-bit0为NPI(numbering-plan-identification),只有当TON为000, 001, 010的时候NPI才有值,其他应该为0000,值为 0 0 0 1 ,表示ISDN/telephone numbering plan

//--------------------TON-NPI------------结束

//----03 是SMS-DELIEVE type,( 0 0 0 0 0 0 1 1 ),表示

//--------------------SMS-DELIVER-TYPE------------开始

//------bit1, bit0是       TP-MTI,值为 0 0 ,表示SMS-DELIVER type( SC to MS direction).

//------bit2是             TP-MMS,值为 1 表示More messages are waiting for the MS in the SC

//------bit4, bit3         不清楚,值为 0 0

//------bit5是             TP-SRI,值为 0 表示A status report will be returned to the SME.

//------bit6是             TP-UDHI,值为 0 表示The TP-UD field contains only the short message.

//------bit7是             TP-RP,值为 0 表示TS-Reply-Path parameter is not set in this deliver.

//--------------------SMS-DELIVER-TYPE------------结束

//----05 81 21 43 F5 是TP-OA,表示12345

//--------------------TON-NPI------------开始

//----81 TON-NPI( 1 0 0 0 0 0 0 1 ),表示

//------bit7为 1

//------bit6, bit5, bit4是TON(type-of-number),值为 0 0 0 ,表示Unknown

//------bit3-bit0为NPI(numbering-plan-identification),只有当TON为000, 001, 010的时候NPI才有值,其他应该为0000,值为 0 0 0 1 ,表示ISDN/telephone numbering plan

//--------------------TON-NPI------------结束

//----00 TP-PID

//--------------------TP-PID------------开始

//------bit7, bit6为 0 0

//------bit5-bi50为 0 0 0 0 0 0 表示Short message type 0

//--------------------TP-PID------------结束

//----08 是TP-DCS(00表示压缩英文,04表示未压缩文字,08表示UCS2),

//----80 40 02 81 10 90 80 是TP-SCTS,表示08年04月20日18时01分09秒08时区

//----18 是TP-UDL,表示10进制( 24 ),

//----4E 2D 65 87 77 ED 4F E1 FF 0C 00 63 00 68 00 69 00 6E 00 65 00 73 00 65 表示"中文短信,chinese"

//90 00 是返回状态,表示---成功

 

//READ RECORD

A0 B2 02 04 B0

03 08 91 68 31 08 10 00 05 F0 04 08 91 68 01 21 43 00 00 80 40 02 81 10 93 80 07 65 F7 99 9D 9E A3 01 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00

90 00

//A0 B2 02 04 B0 是命令头,CLA = A0表示GSM应用,INS = B2 表示READ RECORD,P1 P2 = 02 04 是参数,P3 = B0 是数据的长度(或返回数据的长度)表示( 176 )

//读记录,P2 = 04 表示绝对记录号,P1 = 02 为记录号,表示第2 条记录P3 = B0 表示后面的数据长度为176

//--收到的短信,未读

//----08 91 68 31 08 10 00 05 F0 是短信中心号码,表示+8613800100500

//--------------------TON-NPI------------开始

//----91 TON-NPI( 1 0 0 1 0 0 0 1 ),表示

//------bit7为 1

//------bit6, bit5, bit4是TON(type-of-number),值为 0 0 1 ,表示International number

//------bit3-bit0为NPI(numbering-plan-identification),只有当TON为000, 001, 010的时候NPI才有值,其他应该为0000,值为 0 0 0 1 ,表示ISDN/telephone numbering plan

//--------------------TON-NPI------------结束

//----03 是SMS-DELIEVE type,( 0 0 0 0 0 0 1 1 ),表示

//--------------------SMS-DELIVER-TYPE------------开始

//------bit1, bit0是       TP-MTI,值为 0 0 ,表示SMS-DELIVER type( SC to MS direction).

//------bit2是             TP-MMS,值为 1 表示More messages are waiting for the MS in the SC

//------bit4, bit3         不清楚,值为 0 0

//------bit5是             TP-SRI,值为 0 表示A status report will be returned to the SME.

//------bit6是             TP-UDHI,值为 0 表示The TP-UD field contains only the short message.

//------bit7是             TP-RP,值为 0 表示TS-Reply-Path parameter is not set in this deliver.

//--------------------SMS-DELIVER-TYPE------------结束

//----08 91 68 01 21 43 是TP-OA,表示+86101234

//--------------------TON-NPI------------开始

//----91 TON-NPI( 1 0 0 1 0 0 0 1 ),表示

//------bit7为 1

//------bit6, bit5, bit4是TON(type-of-number),值为 0 0 1 ,表示International number

//------bit3-bit0为NPI(numbering-plan-identification),只有当TON为000, 001, 010的时候NPI才有值,其他应该为0000,值为 0 0 0 1 ,表示ISDN/telephone numbering plan

//--------------------TON-NPI------------结束

//----00 TP-PID

//--------------------TP-PID------------开始

//------bit7, bit6为 0 0

//------bit5-bi50为 0 0 0 0 0 0 表示Short message type 0

//--------------------TP-PID------------结束

//----00 是TP-DCS(00表示压缩英文,04表示未压缩文字,08表示UCS2),

//----80 40 02 81 10 93 80 是TP-SCTS,表示08年04月20日18时01分39秒08时区

//----07 是TP-UDL,表示10进制( 7 ),

//----65 F7 99 9D 9E A3 01 表示"english"

//90 00 是返回状态,表示---成功

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的UDP C++解码程序的示例,可以解析每个数据包可能包含的多个消息,消息的个数在包头定义,包头的包长度不包括包头的长度,消息长度包括消息头的长度。同时,程序也支持深度行情,可以处理每个UDP数据包可能包含的多个上述报文。 ```c++ #include <iostream> #include <string> #include <cstring> #include <arpa/inet.h> #include <sys/socket.h> #include <unistd.h> #define BUFFER_SIZE 1024 using namespace std; int main(int argc, char* argv[]) { int port = 12345; // 设置端口号 int sock = socket(AF_INET, SOCK_DGRAM, 0); // 创建socket struct sockaddr_in addr{}; // 定义socket地址结构体 addr.sin_family = AF_INET; // 设置地址家族 addr.sin_addr.s_addr = htonl(INADDR_ANY); // 绑定本机IP addr.sin_port = htons(port); // 设置端口号 bind(sock, (struct sockaddr*) &addr, sizeof(addr)); // 绑定socket char buffer[BUFFER_SIZE]; // 定义缓冲区 while (true) { struct sockaddr_in client_addr{}; socklen_t client_sock_len = sizeof(client_addr); memset(buffer, 0, BUFFER_SIZE); int len = recvfrom(sock, buffer, BUFFER_SIZE, 0, (struct sockaddr*) &client_addr, &client_sock_len); // 接收数据包 if (len < 0) { cerr << "Receive failed" << endl; break; } int offset = 0; while (offset < len) { int package_len = ntohs(*(int*) (buffer + offset)); // 解析包长度 int message_count = ntohs(*(short*) (buffer + offset + 4)); // 解析消息个数 int package_type = ntohs(*(short*) (buffer + offset + 6)); // 解析包类型 cout << "Package Type: " << package_type << ", Package Length: " << package_len << ", Message Count: " << message_count << endl; for (int i = 0; i < message_count; i++) { int message_len = ntohs(*(short*) (buffer + offset + 8 + i * 2)); // 解析消息长度 char* message = buffer + offset + 8 + message_count * 2 + i * message_len; // 获取消息内容 cout << "Message " << i << ": " << message << endl; } offset += package_len; // 更新偏移量 } } close(sock); // 关闭socket return 0; } ``` 这个程序首先创建了一个UDP socket,并绑定了一个端口号。然后进入一个无限循环,不断接收数据包。每次接收到一个数据包后,程序会通过解析包头来获取包长度,消息个数和包类型信息。然后程序会循环解析每个消息,并输出消息内容。最后,程序再次进入循环等待下一个数据包的到来。 注意,这个程序只是一个简单的示例,实际应用可能需要根据具体需求进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值