返回信息流这是本人在网上找的代码,可是之行有好多错误,求解答,或者直接给个代码都行,谢谢
#define nWAP_SIN_EX 25 //单包WAP PUSH额外字节长度
#define nMMS_SIN_EX 77 //单包彩信额外字节长度
int CWapPush::GetMMSEncode(
char * pSrcNum, //源发送号码
char * pUrl, //下载连接
char * pSubject, //标题
int nMMSSize, //字节大小
char * pOut1, //输出短信二进制
int * nOut1Len,
char * pOut2, //输出短信二进制
int * nOut2Len,
int * nCount) //几条短信
{
* nCount=1;
int nLeftByte;
char szEncode1[350*2]={0}; //加码编码1
char szEncode2[350]={0}; //加码编码2
int nSrcNumLen = strlen(pSrcNum) ;
int nUrlLen = strlen(pUrl);
int nTransactionID= GetTransactionID();
int nSubjectLen=strlen(pSubject); //标题长度
int nSubject_UTF_8_Len; //标题***UTF-8的长度
char *pSubject_UTF_8 =(char *) alloca (nSubjectLen* 3 + 1 + 3 ); //new char[nSubjectLen* 3 + 1 ]={0};
GB2312ToUTF_8(pSubject, nSubjectLen,pSubject_UTF_8+2); //标题***UTF-8
nSubject_UTF_8_Len=strlen(pSubject_UTF_8 + 2 );
pSubject_UTF_8[0]=nSubject_UTF_8_Len + 1 + 1 ; //charset value-length
pSubject_UTF_8[1]=0xEA;
nSubject_UTF_8_Len=nSubject_UTF_8_Len + 2 ;
if( ( nMMS_SIN_EX + nSrcNumLen + nUrlLen + nSubject_UTF_8_Len ) > 140 )
{
//第一条短信息
// udh
szEncode1[0]='0';szEncode1[1] ='B'; // "0B" User Data Header Length (11 bytes)
szEncode1[2]='0';szEncode1[3] ='5'; // "05" UDH Item Element id (Port Numbers)
szEncode1[4]='0';szEncode1[5] ='4'; // "04 UDH IE length (4 bytes)
szEncode1[6]='0';szEncode1[7] ='B'; // "0B"
szEncode1[8]='8';szEncode1[9] ='4'; // "84" destination port number
szEncode1[10]='2';szEncode1[11] ='3';// "23"
szEncode1[12]='F';szEncode1[13] ='0';// "F0"origin port number
szEncode1[14]='0';szEncode1[15] ='0';// "00"concatenation identifier element
szEncode1[16]='0';szEncode1[17] ='3';// "03"length of params
szEncode1[18]='3';szEncode1[19] ='A';// "3A"concat reference
szEncode1[20]='0';szEncode1[21] ='2';// "02"total parts
szEncode1[22]='0';szEncode1[23] ='1';// "01"sequence number
//pud += "400601AE";
ByteToHexString(nTransactionID,&szEncode1[24]); //transaction id (connectionless WSP)
szEncode1[26]='0';szEncode1[27] ='6';// pdu type (06=push)
szEncode1[28]='2';szEncode1[29] ='2';// Headers len
//application/vnd.wap.mms-message+'0'
memcpy(&szEncode1[30],"6170706C69636174696F6E2F766E642E7761702E6D6D732D6D65737361676500",0x20 * 2 );
// AF84 x-wap-application.ua
szEncode1[94]='A';szEncode1[95] ='F';
szEncode1[96]='8';szEncode1[97] ='4';
// MMS Specific stuff
szEncode1[98]='8';szEncode1[99] ='C';
szEncode1[100]='8';szEncode1[101] ='2'; //8C 82 message type (m-notification.ind)
szEncode1[102]='9';szEncode1[103] ='8'; //98 MMS transaction ID
szEncode1[104]='3';szEncode1[105] ='3';
szEncode1[106]='4';szEncode1[107] ='6';
szEncode1[108]='3';szEncode1[109] ='6';
szEncode1[110]='3';szEncode1[111] ='6';
szEncode1[112]='3';szEncode1[113] ='8';
szEncode1[114]='3';szEncode1[115] ='8';
szEncode1[116]='3';szEncode1[117] ='2';
ByteToHexString(nTransactionID,&szEncode1[118]);// transaction id (connectionless WSP)
szEncode1[120]='0';szEncode1[121] ='0';
szEncode1[122]='8';szEncode1[123] ='D';
szEncode1[124]='9';szEncode1[125] ='0';// 8D90 MMS version 1.0
szEncode1[126]='8';szEncode1[127] ='9';// FROM
ByteToHexString(nSrcNumLen + 1 + 1,&szEncode1[128]); // length of from
szEncode1[130]='8';szEncode1[131] ='0'; // 80 address present
ByteArrayToHexString(pSrcNum,nSrcNumLen,&szEncode1[132]); //发送号码
szEncode1[132+ nSrcNumLen *2 ]='0';szEncode1[133+ nSrcNumLen *2 ]='0';//00
szEncode1[134+ nSrcNumLen *2 ]='9';szEncode1[135+ nSrcNumLen *2 ]='6';//96 subject
ByteArrayToHexString(pSubject_UTF_8,nSubject_UTF_8_Len,&szEncode1[136+ nSrcNumLen *2 ]);//显示标题
szEncode1[136+ (nSubject_UTF_8_Len + nSrcNumLen)*2 ]='0';szEncode1[137+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='0';//00
szEncode1[138+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='8';szEncode1[139+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='A';
szEncode1[140+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='8';szEncode1[141+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='0';//Personal message class
szEncode1[142+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='8';szEncode1[143+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='E';//msg size
int msgByte=0;
if(nMMSSize&0xFF000000)
{
sprintf(&szEncode1[146+(nSubject_UTF_8_Len + nSrcNumLen )*2],"%08X",nMMSSize);
msgByte=4;
}
else if(nMMSSize&0xFF0000)
{
sprintf(&szEncode1[146+(nSubject_UTF_8_Len + nSrcNumLen )*2],"%06X",nMMSSize);
msgByte=3;
}
else if(nMMSSize&0xFF00)
{
sprintf(&szEncode1[146+(nSubject_UTF_8_Len + nSrcNumLen )*2],"%04X",nMMSSize);
msgByte=2;
}
else if(nMMSSize&0xFF)
{
sprintf(&szEncode1[146+(nSubject_UTF_8_Len + nSrcNumLen )*2],"%02X",nMMSSize);
msgByte=1;
}
ByteToHexString(msgByte,&szEncode1[144+ (nSubject_UTF_8_Len + nSrcNumLen) *2]); // 2 octets
szEncode1[146+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='8';szEncode1[147+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='8';//88 expiry
szEncode1[148+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='0';szEncode1[149+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='5';//05 expiry length
szEncode1[150+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='8';szEncode1[151+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='1';//81 relative format
szEncode1[152+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='0';szEncode1[153+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='3';// 3 octets
szEncode1[154+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='0';szEncode1[155+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='9';
szEncode1[156+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='3';szEncode1[157+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='A';
szEncode1[158+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='8';szEncode1[159+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='0';//01 51 80: 24hrs (86400 secs)
szEncode1[160+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='8';szEncode1[161+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='3';//83 content location
ByteArrayToHexString(pUrl, nUrlLen ,&szEncode1[162+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2]);
szEncode1[162+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte + nUrlLen) *2]='0';
szEncode1[163+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte + nUrlLen) *2]='0';
*nOut1Len=140;
ChangeStringToHexBuf(szEncode1, (*nOut1Len) *2 ,pOut1);
nLeftByte = 164 + (nUrlLen + nSubject_UTF_8_Len+nSrcNumLen +msgByte )*2 - 280;
//第二条短信息
szEncode2[0]='0';szEncode2[1] ='B'; // "0B" User Data Header Length (11 bytes)
szEncode2[2]='0';szEncode2[3] ='5'; // "05" UDH Item Element id (Port Numbers)
szEncode2[4]='0';szEncode2[5] ='4'; // "04 UDH IE length (4 bytes)
szEncode2[6]='0';szEncode2[7] ='B'; // "0B"
szEncode2[8]='8';szEncode2[9] ='4'; // "84" destination port number
szEncode2[10]='2';szEncode2[11] ='3';// "23"
szEncode2[12]='F';szEncode2[13] ='0';// "F0"origin port number
szEncode2[14]='0';szEncode2[15] ='0';// "00"concatenation identifier element
szEncode2[16]='0';szEncode2[17] ='3';// "03"length of params
szEncode2[18]='3';szEncode2[19] ='A';// "3A"concat reference
szEncode2[20]='0';szEncode2[21] ='2';// "02"total parts
szEncode2[22]='0';szEncode2[23] ='2';// "01"sequence number
memcpy(&szEncode2[24],&szEncode1[280],nLeftByte);
*nOut2Len= 12+ nLeftByte/2 ;
ChangeStringToHexBuf(szEncode2, (*nOut2Len )*2 ,pOut2);
* nCount = 2 ;
}
else
{
// User Data Header: udh
szEncode1[0]='0';szEncode1[1] ='6'; // "06" User Data Header Length (6 bytes)
szEncode1[2]='0';szEncode1[3] ='5'; // "05" UDH Item Element id (Port Numbers)
szEncode1[4]='0';szEncode1[5] ='4'; // "04 UDH IE length (4 bytes)
szEncode1[6]='0';szEncode1[7] ='B'; // "0B"
szEncode1[8]='8';szEncode1[9] ='4'; // "84" destination port number
szEncode1[10]='2';szEncode1[11] ='3';// "23"
szEncode1[12]='F';szEncode1[13] ='0';// "F0"origin port number
//WSP header:
ByteToHexString(nTransactionID,&szEncode1[14]);// transaction id (connectionless WSP)
szEncode1[16]='0';szEncode1[17] ='6';// pdu type (06=push)
szEncode1[18]='2';szEncode1[19] ='2';// Headers len
//application/vnd.wap.mms-message+'0'
memcpy(&szEncode1[20],"6170706C69636174696F6E2F766E642E7761702E6D6D732D6D65737361676500",0x20 * 2 );
// AF84 x-wap-application.ua
szEncode1[84]='A';szEncode1[85] ='F';
szEncode1[86]='8';szEncode1[87] ='4';
// MMS Specific stuff
szEncode1[88]='8';szEncode1[89] ='C';
szEncode1[90]='8';szEncode1[91] ='2'; //8C 82 message type (m-notification.ind)
szEncode1[92]='9';szEncode1[93] ='8'; //98 MMS transaction ID
szEncode1[94]='3';szEncode1[95] ='3';
szEncode1[96]='4';szEncode1[97] ='6';
szEncode1[98]='3';szEncode1[99] ='6';
szEncode1[100]='3';szEncode1[101] ='6';
szEncode1[102]='3';szEncode1[103] ='8';
szEncode1[104]='3';szEncode1[105] ='8';
szEncode1[106]='3';szEncode1[107] ='2';
ByteToHexString(nTransactionID,&szEncode1[108]);// transaction id (connectionless WSP)
szEncode1[110]='0';szEncode1[111] ='0';
szEncode1[112]='8';szEncode1[113] ='D';
szEncode1[114]='9';szEncode1[115] ='0';// 8D90 MMS version 1.0
szEncode1[116]='8';szEncode1[117] ='9';// FROM
ByteToHexString(nSrcNumLen + 1 + 1,&szEncode1[118]); // length of from
szEncode1[120]='8';szEncode1[121] ='0'; // 80 address present
ByteArrayToHexString(pSrcNum,nSrcNumLen,&szEncode1[122]); //发送号码
szEncode1[122+ nSrcNumLen *2 ]='0';szEncode1[123+ nSrcNumLen *2 ]='0';//00
szEncode1[124+ nSrcNumLen *2 ]='9';szEncode1[125+ nSrcNumLen *2 ]='6';//96 subject
ByteArrayToHexString(pSubject_UTF_8,nSubject_UTF_8_Len,&szEncode1[126+ nSrcNumLen *2 ]);//显示标题
szEncode1[126+ (nSubject_UTF_8_Len + nSrcNumLen)*2 ]='0';szEncode1[127+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='0';//00
szEncode1[128+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='8';szEncode1[129+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='A';
szEncode1[130+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='8';szEncode1[131+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='0';//Personal message class
szEncode1[132+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='8';szEncode1[133+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='E';//msg size
int msgByte=0;
if(nMMSSize&0xFF000000)
{
sprintf(&szEncode1[136+(nSubject_UTF_8_Len + nSrcNumLen )*2],"%08X",nMMSSize);
msgByte=4;
}
else if(nMMSSize&0xFF0000)
{
sprintf(&szEncode1[136+(nSubject_UTF_8_Len + nSrcNumLen )*2],"%06X",nMMSSize);
msgByte=3;
}
else if(nMMSSize&0xFF00)
{
sprintf(&szEncode1[136+(nSubject_UTF_8_Len + nSrcNumLen )*2],"%04X",nMMSSize);
msgByte=2;
}
else if(nMMSSize&0xFF)
{
sprintf(&szEncode1[136+(nSubject_UTF_8_Len + nSrcNumLen )*2],"%02X",nMMSSize);
msgByte=1;
}
ByteToHexString(msgByte,&szEncode1[134+ (nSubject_UTF_8_Len + nSrcNumLen) *2]); // 2 octets
szEncode1[136+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='8';szEncode1[137+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='8';//88 expiry
szEncode1[138+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='0';szEncode1[139+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='5';//05 expiry length
szEncode1[140+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='8';szEncode1[141+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='1';//81 relative format
szEncode1[142+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='0';szEncode1[143+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='3';// 3 octets
szEncode1[144+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='0';szEncode1[145+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='9';
szEncode1[146+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='3';szEncode1[147+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='A';
szEncode1[148+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='8';szEncode1[149+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='0';//01 51 80: 24hrs (86400 secs)
szEncode1[150+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='8';szEncode1[151+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='3';//83 content location
ByteArrayToHexString(pUrl, nUrlLen ,&szEncode1[152+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2]);
szEncode1[152+ (nSubject_UTF_8_Len + nSrcNumLen + msgByte + nUrlLen) *2 ]='0';szEncode1[153 + (nSubject_UTF_8_Len+nSrcNumLen+msgByte+nUrlLen) *2]='0';//00结束
*nOut1Len= 152/2 + 1 + nSubject_UTF_8_Len + nSrcNumLen + msgByte + nUrlLen;
ChangeStringToHexBuf(szEncode1, (*nOut1Len) *2 ,pOut1);
//WriteFile("mms.txt" ,szEncode1 ,(*nOut1Len) *2);
}
return 0;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #48109同步于 2010/12/20
CPP机器人发帖
想实现发送mms消息,怎么弄
cindyai
2010/12/20镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。