亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? parse_packet.c

?? 基于上海電信 sgmp3.0短信協議,實現的源程序,現網運行穩定,unix (freeBSD) 環境下編程.
?? C
字號:
/*$Header: /base/cvsroot/wam/sms/platform/src/smgp3/parse_packet.c,v 1.1 2006/06/30 02:48:31 zhiyong Exp $*/

#include <stdio.h>
#include <string.h>
#include <arpa/inet.h>
#include "parse_packet.h"



int unparse_packet_1(unsigned char *buffer,unsigned int length, 
                     unsigned char *linkid,
                     unsigned char *SubmitMsgType,
                     unsigned char *SPDealResult    )
{
//    unsigned char *p;
    int offset =0;
    unsigned short temp;
    TLV2   param;
    
    // buffer: Tag(2)+Length(2)+Value(XX) +Tag(2)+Length(2)+Value(XX)
    //p = buffer;  
    
    if(length==0)
       return 0;
       
    while(offset< length)
    {                         
        memset(&param, 0, sizeof(TLV2));   
        memcpy (&temp, buffer+offset, 2);   
        param.Paramater_Tag = ntohs(temp);  //get Tag.
        offset += 2;
        
        if(param.Paramater_Tag == LinkID_Tag) 
        {
            memcpy (&temp, buffer+offset, 2);    //get Length        
            param.Length = ntohs(temp);
            offset += 2;
            memcpy(linkid, buffer+offset,param.Length); //get Value.
            
            offset += param.Length;
            if(offset>= length) 
                return 0;                      
        } 
        else
        if(param.Paramater_Tag == SubmitMsgType_Tag) 
        {
            memcpy (&temp, buffer+offset, 2);
            param.Length = ntohs(temp);
            offset += 2;
            
            memcpy(SubmitMsgType,buffer+offset,param.Length); //get Value.
            
            //*SubmitMsgType=ntohs(
            
            offset += param.Length;
            if(offset>= length) 
                return 0;                      
        } 
        else
        if( param.Paramater_Tag == SPDealReslt_Tag) 
        {
            memcpy (&temp, buffer+offset, 2);            
            param.Length = ntohs(temp);
            offset += 2;
            
            memcpy(SPDealResult,buffer+offset,param.Length); //get Value.
            
            offset += param.Length;
            if(offset>= length) 
                return 0;
            
        }
        else
        {	
        	printf("unknow TLV type, ID:0x%02x\n", param.Paramater_Tag);
		memcpy (&temp, buffer+offset, 2);            
            	param.Length = ntohs(temp);
            	offset += 2;
                       
            	offset += param.Length;
            	if(offset>= length) 
                	return 0;
        }
            
      }//end while.
      
      return 0;
//        memset(&param, 0, sizeof(TLV2));
//        memcpy (&temp, buffer, 2);
//        offset += 2;
//        param.Paramater_Tag = ntohs(temp);
}


int parse_packet(unsigned char *buffer, unsigned int length , unsigned char *linkid, unsigned int SubmitMsgType, unsigned int  SPDealResult)
{
//    unsigned char *p;
    int offset =0;
    unsigned short temp;
    unsigned char  ch;
    temp = htons(LinkID_Tag);
    memcpy (buffer , (unsigned char *) &temp, 2);
    offset += 2;
    temp = htons(20);
    memcpy (buffer+offset , (unsigned char *) &temp, 2);
    offset += 2;
    memcpy (buffer+offset, linkid,20);
    offset += 20;

    temp = htons(SubmitMsgType_Tag);
    memcpy (buffer+offset , (unsigned char *) &temp, 2);
    offset += 2;
    temp = htons(1);
    memcpy (buffer+offset , (unsigned char *) &temp, 2);
    offset += 2;
    ch = htons(SubmitMsgType);
    memcpy (buffer+offset , (unsigned int *) &ch, 1);
    offset += 2;

    if(SubmitMsgType == 15) {
        temp = htons(SPDealReslt_Tag);
        memcpy (buffer+offset , (unsigned char *) &temp, 2);
        offset += 2;
        temp = htons(1);
        memcpy (buffer+offset , (unsigned char *) &temp, 2);
        offset += 2;
        ch = htons(SPDealResult);
        memcpy (buffer+offset , (unsigned int *) &ch, 1);
        offset += 1;
    }
    return offset;
}




int unparse_packet(unsigned char *buffer,unsigned int length, unsigned char *linkid,unsigned char *SubmitMsgType,unsigned char *SPDealResult)
{
//    unsigned char *p;
    int offset =0;
    unsigned short temp;
    TLV2   param;

    memset(&param, 0, sizeof(TLV2));
    //p = buffer;
    memcpy (&temp, buffer, 2);
    offset += 2;
    param.Paramater_Tag = ntohs(temp);

    //--------------------------------------------main Item.
     
    if(param.Paramater_Tag == LinkID_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2;
        param.Length = ntohs(temp);
        memcpy(linkid, buffer+offset,param.Length);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 
    
    if(param.Paramater_Tag == SubmitMsgType_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2;
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 
    
    if( param.Paramater_Tag == SPDealReslt_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2;
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 
    //--------------------------------------------
    if(param.Paramater_Tag == TP_pid_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2;
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 
    if( param.Paramater_Tag == TP_udhi_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2;
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 
   
    if( param.Paramater_Tag == ChargeUserType_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2;
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 

    if(param.Paramater_Tag == ChargeTermType_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2;
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 
    if( param.Paramater_Tag == ChargeTermPseudo_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2;
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 
    if(param.Paramater_Tag == DestTermType_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2;
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 
    if( param.Paramater_Tag == DestTermPseudo_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2 ;
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 
    if(param.Paramater_Tag == PkTotal_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2;
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 
    if( param.Paramater_Tag == PkNumber_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2; 
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 
   
    
    if(param.Paramater_Tag == SrcTermType_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2;
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 
    if( param.Paramater_Tag == SrcTermPseudo_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2;
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 
    if(param.Paramater_Tag == NodesCount_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2;
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 
    if( param.Paramater_Tag == MsgSrc_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2;
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 
    if(param.Paramater_Tag == SrcType_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2;
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
        memset(&param, 0, sizeof(TLV2));
        memcpy (&temp, buffer, 2);
        offset += 2;
        param.Paramater_Tag = ntohs(temp);
    } 
    if( param.Paramater_Tag == MServiceID_Tag) {
        memcpy (&temp, buffer+offset, 2);
        offset += 2;
        param.Length = ntohs(temp);
        offset += param.Length;
        if(offset>= length) {
            return 0;
        }
    } 
    return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美喷潮久久久xxxxx| 色综合天天综合网国产成人综合天| 亚洲裸体xxx| 中文字幕亚洲在| 亚洲欧洲av在线| 亚洲日本一区二区| 亚洲激情网站免费观看| 亚洲精品菠萝久久久久久久| 亚洲码国产岛国毛片在线| 自拍偷拍国产精品| 夜夜精品视频一区二区| 亚洲r级在线视频| 蜜臀99久久精品久久久久久软件| 美国毛片一区二区| 国产福利一区二区三区| 成人毛片视频在线观看| 99久久综合国产精品| 在线观看网站黄不卡| 欧美美女一区二区在线观看| 欧美一区二区三区免费视频| 欧美大片国产精品| 日本一区二区综合亚洲| 中文字幕亚洲区| 首页国产欧美久久| 国产乱人伦偷精品视频不卡| 岛国一区二区在线观看| 欧美在线免费播放| 欧美videos大乳护士334| 久久久亚洲欧洲日产国码αv| 国产精品久久久久一区二区三区| 亚洲美女淫视频| 极品尤物av久久免费看| 91免费观看在线| 日韩精品一区二| 亚洲人成网站色在线观看| 日韩精品一区第一页| gogogo免费视频观看亚洲一| 在线观看成人小视频| 久久―日本道色综合久久| 亚洲欧美日韩在线不卡| 蜜臀a∨国产成人精品| 99re视频精品| 久久久久九九视频| 偷窥少妇高潮呻吟av久久免费| 国产一区二区伦理片| 欧美色国产精品| 欧美国产日本韩| 蜜臀av性久久久久蜜臀av麻豆 | 一级精品视频在线观看宜春院| 理论片日本一区| 色婷婷国产精品| 久久无码av三级| 全部av―极品视觉盛宴亚洲| eeuss国产一区二区三区| 日韩欧美国产wwwww| 亚洲三级视频在线观看| 国产一区二区成人久久免费影院| 精品视频999| 亚洲美女淫视频| 国产69精品久久99不卡| 日韩女优毛片在线| 天天综合网 天天综合色| 91在线精品一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋| 美女一区二区视频| 9191精品国产综合久久久久久 | 色综合久久综合网97色综合| 国产日韩欧美高清在线| 久久99国产乱子伦精品免费| 欧美精品日韩综合在线| 亚洲综合色视频| 色综合天天在线| 亚洲欧洲日产国码二区| 国产成人精品亚洲777人妖| 久久久综合网站| 国产在线视频一区二区三区| 日韩免费在线观看| 国产综合久久久久影院| 精品国产制服丝袜高跟| 精品一区二区三区免费毛片爱| 欧美一区二区国产| 免费观看一级特黄欧美大片| 日韩欧美一区在线| 久久精品免费观看| 久久久久综合网| 国产不卡一区视频| 亚洲欧美自拍偷拍色图| 91美女片黄在线观看| 亚洲一区欧美一区| 日韩视频一区在线观看| 九九**精品视频免费播放| 久久久亚洲精品石原莉奈| 国产v综合v亚洲欧| 尤物视频一区二区| 欧美亚洲国产一区二区三区 | 亚洲精品一区二区三区精华液 | 2023国产精品视频| 丁香六月综合激情| 一区二区三区欧美在线观看| 欧美日韩久久一区二区| 美女爽到高潮91| 欧美国产日本视频| 欧美色倩网站大全免费| 视频一区免费在线观看| 国产无一区二区| 日本精品视频一区二区| 免费国产亚洲视频| 国产精品你懂的| 在线免费观看日韩欧美| 激情五月婷婷综合| 樱花草国产18久久久久| 日韩视频一区二区三区在线播放 | 91丨porny丨户外露出| 日韩福利电影在线观看| 亚洲国产成人午夜在线一区| 在线观看免费亚洲| 国产美女久久久久| 亚洲午夜精品17c| 国产亚洲欧美日韩日本| 欧美系列亚洲系列| 国产1区2区3区精品美女| 午夜精品在线视频一区| 国产日本一区二区| 91精品国产乱| 欧美在线视频日韩| 波多野结衣91| 精品一区二区影视| 日韩精品成人一区二区三区| 中文字幕的久久| 欧美精品一区二区三区蜜桃| 色女孩综合影院| 国产成人精品亚洲777人妖| 日韩福利视频导航| 亚洲国产一区二区三区青草影视| 国产三级一区二区| 精品日韩一区二区三区免费视频| 一本久道久久综合中文字幕 | av男人天堂一区| 国产在线不卡视频| 蜜臀av一区二区在线观看| 一区二区三区中文字幕精品精品 | 成人不卡免费av| 国产美女精品在线| 久久电影国产免费久久电影| 亚洲1区2区3区视频| 亚洲免费大片在线观看| 亚洲欧美怡红院| 国产精品麻豆网站| 国产亲近乱来精品视频| 国产丝袜美腿一区二区三区| 欧美成人a视频| 2014亚洲片线观看视频免费| 日韩精品一区二区三区视频播放 | 一区二区三区不卡在线观看| 国产精品国产三级国产aⅴ入口 | 欧美在线免费观看视频| 美女视频一区二区| 亚洲综合色噜噜狠狠| 麻豆成人综合网| 日一区二区三区| 久久亚洲春色中文字幕久久久| 欧美大尺度电影在线| 亚洲欧美偷拍卡通变态| 青青草国产精品亚洲专区无| 国产成人av一区| 欧美一区午夜精品| 中文字幕综合网| 久久精品国产一区二区三区免费看| 成人午夜视频福利| 日韩欧美国产电影| 一区二区久久久| 成年人午夜久久久| 久久综合九色综合欧美亚洲| 亚洲国产成人va在线观看天堂| 国产一区二区三区日韩| 欧美电影一区二区三区| 亚洲精品国产高清久久伦理二区| 国产乱码字幕精品高清av| 8x8x8国产精品| 樱花草国产18久久久久| 成人看片黄a免费看在线| 欧美草草影院在线视频| 午夜国产精品一区| 色婷婷av久久久久久久| 日本一区二区久久| 国产乱子伦一区二区三区国色天香| 欧美伊人久久久久久久久影院| 国产精品网曝门| 国产福利一区在线观看| 久久久蜜桃精品| 久久国产尿小便嘘嘘| 日韩欧美在线观看一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了| 波多野结衣中文字幕一区| 国产人成一区二区三区影院| 韩国av一区二区| 久久综合色婷婷| 激情综合色综合久久| 精品久久久网站| 国产一区美女在线|