|
ÁªÖÚÉý¼¶ÐÒé·ÖÎö ÐøÆª£¨Èý£©(1)
ÁªÖÚÉý¼¶ÐÒé·ÖÎö ÐøÆª(Èý) ÔÆÍø£¨jimzj@21cn.com£© ½ÓÉÏÆª ÏÂÃæ¾ÍÈ¥ÈçºÎÈ¥·ÖÎöÿ¸öÃüÁî×Ö×÷˵Ã÷£º ÔÚÕâ֮ǰ£¬ÎÒÃÇÏȶ¨Òåÿһ¸ö°üµÄ°üÍ·½á¹¹£º typedef strUCt _tagPackHead { int nCommand ; //ÃüÁî×Ö int nDataLen ; //°ü³¤¶È }PackHead, *lpPackHead ; ÉÏÃæµÄµÃµ½Ò»¸öÍêÕûµÄÐÒé°üʱÒÑÓõ½Õâ¸ö½á¹¹ÁË¡£ XML:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> Ò»¡¢µÇ¼Óû§ÃüÁî 0x0000 00 02 00 80 C8 00 00 00-01 00 00 00 04 00 02 00 ...€?.......... 0x0010 00 00 00 00 79 6F 75 73-68 69 5F 31 39 38 31 00 ....dddddd_1981. 0x0020 00 B3 03 00 00 00 00 00-C5 DC C5 DC C5 DC CC F8 .?.....ÊÇÊÇÊÇÊÇ 0x0030 00 C5 00 00 00 00 00 00-C7 00 FF 00 00 00 00 00 .?.....?ÿ..... 0x0040 01 00 00 00 68 6F 6E 64-61 30 34 31 32 00 00 00 ....ffffff0412... ¡¡¡¡¡¡.. ´ÓÊý¾ÝÉÏ¿´£¬ÃüÁî×ÖÊÇ0x80000200ÎÒÃDz»±ØÒªÃ¿Ò»¸öÊý¾Ý¶¼ÒªÖªµÀËüÊÇʲôÒâ˼£¬Ö»ÒªÕÒµ½ÎÒÃǵÄÒ»Êý¾Ý¾ÍÐÐÁË¡£´ÓÉÏÃæËù±êÖ¾µÄÑÕÉ«À´¿´£¬Ç°ÃæµÄÊÇÃüÁî×Ö£¬ºìÉ«µÄÊÇÊ²Ã´ÄØ£¿´ó¼ÒÏëһϣ¬´òÉý¼¶Ò»¹²ÊÇËĸöÈË£¬ºÇºÇ£¬Äã´ó¸Å»áÃ÷°×ÁË£¬Õâ¸öÊÇ·þÎñÆ÷·ÖÅä¸øÃ¿¸öÓû§µÄ±àºÅ£¬Õâ¸öºÜÖØÒª£¬ÒòΪÆäËüÖ¸ÁîÖв»»áÔÙ³öÏÖÓû§Ãû³ÆÁË£¬Ö»»áÓÐÒ»¸öÓû§±àºÅ¡£¾¹ý¶à´Î·ÖÎö£¬Óû§µÄ±àºÅÊǹ̶¨µÄ£¬ÎÒÃǰ´×ùÎ»×øÏÂÀ´Ê±·Ö£¬ÈçÏÂÃæËùʾ£º£¨ÊÇÔÚ´óÌüÖÐ×øÏµÈÈËʱ£¬²»ÊdzöÅÆÊ±£© 1 0 ------------ 2 3
°üµÄÇ°ÃæÒ»²¿·ÖÊÇÓû§¸öÊý¾Ý£¬ºóÃæµÄ¾ÍÊÇÿһ¸öÓû§µÄÐÅÏ¢£¬ËùÒÔÎÒÃǶ¨ÒåµÄ°ü½á¹¹ÈçÏ£º typedef struct _tagRespSHJIUserRegister { int nFlag0 ; char cUCount ; //Óû§Êý char cFlag1 ; char cDaPai ; char cFlag4 ; }RespSHJIUserRegister, *lpRespSHJIUserRegister; typedef struct _tagGameUserInfo { char cUserNum ; //Óû§±àºÅ char cFlag1 ; char cFlag2 ; char cFlag3 ; char cUser[ 20 ] ; //Óû§µÇ¼Ãû³Æ char cAlia[ 20 ] ; //Óû§ÖÐÎÄÃû³Æ int nFlag4 ; }GameUserInfo, *lpGameUserInfo; Óû§µÄÃû³ÆÊÇ20¸ö×Ö½Ú£¬ÉÏһƪÎÄÕÂÒÑ˵Ã÷£» ÉÏÃæËµÃ÷AnalyLinkRecvPackº¯ÊýÖÐÓõ½µÄDispatchPacketsÈçÏÂËùʾ£º£¨Õâ¸ö¾ÍÊÇ·Ö½âÿһ¸ö°üÁË£© void __fastcall TFrmMain::DispatchPackets( const char * pPack ) { PackHead * pPackHead = ( PackHead * )pPack ; //°üÍ· if( pPackHead->nDataLen > MAX_COMMAND_SIZE - sizeof( PackHead )) return ; switch( pPackHead->nCommand ) { case RESP_SHJI_USER_REGISTER : if( pPackHead->nDataLen >= sizeof( RespSHJIUserRegister ) + sizeof( GameUserInfo )) //¹ýÂË´íÎóµÄ°ü { RevGameUserInfo(( char * )( pPackHead + 1 )) ; //°üÄÚÈÝ } break ; ¡¡¡¡¡¡¡¡¡¡.. } º¯ÊýRevGameUserInfo¾ÍÊÇ·Ö½âÓû§ÐÅÏ¢µÄ£¬ÉÏÃæÎÒÃÇÒѶ¨ÒåÁ˰üµÄ½á¹¹£¬ËùÒÔÈ¡µÃÓû§µÄÐÅÏ¢¾ÍºÜÈÝÒ×ÁË£º void __fastcall TFrmMain::RevGameUserInfo( char * pPackContent ) { RespSHJIUserRegister * pInfo = ( RespSHJIUserRegister * )pPackContent ; int nUserCount = pInfo->cUCount ; for( int i = 0 ; i < nUserCount ; i ++ ) //¹²ÓÐËĸöÓû§ { GameUserInfo * pUser = ( GameUserInfo * )( ( char * )( pInfo + 1 ) + i * sizeof( GameUserInfo )) ; switch( pUser->cUserNum ) { case POS_LEFT : //±àºÅΪ0µÄÓû§ PanelLeft->Caption = ( String )pUser->cAlia ; break ; case POS_TOP : //±àºÅΪ1µÄÓû§ PanelTop->Caption = ( String )pUser->cAlia ; break ; case POS_RIGHT: //±àºÅΪ2µÄÓû§ PanelRig->Caption = ( String )pUser->cAlia ; break ; case POS_BOT : //±àºÅΪ3µÄÓû§ PanelBot->Caption = ( String )pUser->cAlia ; break ; } } } µ½´Ë£¬ÎÒÃǵõ½ÁËÉý¼¶ÖеÄÿһ¸öÓû§µÄÐÅÏ¢£¬ºÇºÇ£¬ÊDz»ÊÇÓеã³É¾Í¸ÐÁË£¬ÎÒÃÇÉÔΪÐÝϢһϣ¬ºÈÒ»¿Ú²è¡£¡£¡£¡£¡£
|