⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mms_encapsulation.cpp

📁 实现了彩信编程协议中的MIME协议的封装
💻 CPP
字号:
#include <string.h> 
#include <stdio.h>
 int  main()
{
	unsigned char mmsData[30000];
	unsigned char *str,*pzMmsData=mmsData;
	int i=0,j=0;
	memset(pzMmsData,0,sizeof(mmsData));//初始化
	//标题编码
	mmsData[0]=0x8C;mmsData[1]=0x80;
	mmsData[2]=0x98;mmsData[3]=0x30;
	mmsData[4]=0x31;mmsData[5]=0x32;
	mmsData[6]=0x33;mmsData[6]=0x34;
	mmsData[7]=0x35;mmsData[8]=0x36;
	mmsData[9]=0x37;mmsData[10]=0x38;
	mmsData[11]=0x39;
	mmsData[13]=0x8D;mmsData[14]=0x90;
	//源地址
	mmsData[15]=0x89;mmsData[16]=0x1A;//地址长度
	mmsData[17]=0x80;
	pzMmsData = &mmsData[18];
	strcpy(str,"+8613570596080/TYPE=PLMN");
	memcpy(pzMmsData,str,strlen(str));
	//目的地址
	mmsData[43]=0x97;
	pzMmsData =&mmsData[44];
	strcpy(str,"+8613570596080/TYPE=PLMN");
	memcpy(pzMmsData,str,strlen(str));
	mmsData[69]=0x96;
	//消息主题
	pzMmsData=&mmsData[70];
	strcpy(str,"My first test message!");
	memcpy(pzMmsData,str,strlen(str));
    i=70+strlen(str)+1;
	//Content-type
	mmsData[i++]=0x84;mmsData[i++]=0x1B;//值的长度
	j=i+0x1B;//指向正文部分;
	mmsData[i++]=0xB3;mmsData[i++]=0x89;
	//类型参数
	pzMmsData=&mmsData[i];
	strcpy(str,"application/smil");
    memcpy(pzMmsData,str,strlen(str));
    i+=strlen(str)+1;
	//起始参数
	mmsData[i++]=0x8A;
    pzMmsData=&mmsData[i];
	strcpy(str,"<0000>");
	memcpy(pzMmsData,str,strlen(str));
	//正文编码
	i=j;
    mmsData[i++]=0x02;//正文只有两部分
	//第一部分(smil部分)
	mmsData[i++]=0x23;//内容类型+其他可能标题的长度
	//数据长度
	mmsData[i++]=0x85;
	mmsData[i++]=0x1D;
	j=i+0x23;//指向数据部分
	//内容类型+其他可能标题(文本编码)
	pzMmsData=&mmsData[i];
	strcpy(str,"application/smil");
	memcpy(pzMmsData,str,strlen(str));
	i+=strlen(str)+1;
	pzMmsData=&mmsData[i];
	strcpy(str,"Content-ID");
	memcpy(pzMmsData,str,strlen(str));
	i+=strlen(str)+1;
	pzMmsData=&mmsData[i];
	strcpy(str,"<0000>");
    memcpy(pzMmsData,str,strlen(str));
	//实际数据
	i=j;
	j=j+0x29D;//指向第二部分
	pzMmsData=&mmsData[i];
	strcpy(str,"<smil xmlns=\"http://www.w3.org/2001/SMIL20/Languae\">\n\
   <head>\n\
     <layout>\n\
      <root-layout width=\"160\" height=\"140\"/>\n\
	    <region id=\"Image\" width=\"160\" height=\"120\" left=\"0\" top=\"0\"/)\n\
        <region id=\"Text\" width=\"160\" height=\"20\" left=\"0\" top=\"120\"/>\n\
      </layout>\n\
   </head>\n\
   <body>\n\
     <image src=\"test.jpg\"  region=\"Image\"/>\n\
     <text src=\"HelloWorld.txt\" region=\"Text\"/>\n\
   </body>\n\
</smil>\n\
");
   memcpy(pzMmsData,str,strlen(str));
//正文第二部分(image/jpg)编码
   i=j;
   mmsData[i++]=0x11;//内容类型+其他可能标题长度
   mmsData[i++]=0x8A;mmsData[i++]=0x7B;//实际数据长度
   j=i+0x11;
   //内容类型+其他可能标题
   mmsData[i++]=0x9D;  //image/jpg的码值
   mmsData[i++]=0x8E;//内容位置
   pzMmsData=&mmsData[i];
   strcpy(str,"test.jpg");
   memcpy(pzMmsData,str,strlen(str));
   //实际数据
   i=j;
   j=j+0x57B;//指向第三部分
   ..........
//正文第三部分(text/plain)编码
   i=j;
   mmsData[i++]=0x11;//内容类型+其他可能标题长度
   mmsData[i++]=0x00;mmsData[i++]=0x0E;//实际数据长度
   j=i+0x11;
 //内容类型+其他可能标题
   mmsData[i++]=0x83;//text/plain码值
   mmsData[i++]=0x8E;//内容位置
   pzMmsData=&mmsData[i];
   strcpy(str,"HelloWorld.txt");
   memcpy(pzMmsData,str,strlen(str));
   //实际数据
   i=j;



}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -