perl socket请教

perl socket请教

在下需要写一个perl client,通过socket连接server,server使用c写的。只需要传一个包给server,server就会返回给我需要的信息。
这个包的结构是AAFFB9910000CCAA
AAFF,B991,0000,CCAA均为c定义的无符号短整型。

就是说server只要读到AAFFB9910000CCAA,就会返回给我结果。



请达人给点意见
binmode(SOCKET);
print SOCKET pack( 'H*', 'AAFFB9910000CCAA' );
谢谢flw,还是有点问题,我把详细信息贴下。请多指教。

client 查询包

#define CMCOM_PLAYER_CNT 0xB001
DEFP_G_BEGIN( tagCmComPlayerCnt , CMCOM_PLAYER_CNT )
DEFP_G_END

server返回包:
#define COMCM_PLAYER_CNT 0xB002
DEFP_G_BEGIN( tagComCmPlayerCnt , COMCM_PLAYER_CNT )
unsigned long player_cnt;
DEFP_G_END

宏定义:
#define HEADER_FLAG_VALUE 0xFFAA
#define TAILER_FLAG_VALUE 0xAAFF

#define SERV_IP_LEN     16

#define TURN_OFF 0        // 开关关闭
#define TURN_ON 1        // 开关打开

struct tagHeader
{
    unsigned short headflag ;
    unsigned short cmd ;
    unsigned short data_len ;

    inline tagHeader()
    {
        headflag = HEADER_FLAG_VALUE ;
    }
} ;

struct tagTailer
{
//    unsigned long data1 ;
//    unsigned long data2 ;

    unsigned short tailflag ;

    inline tagTailer()
    {
    //    data1 = 0 ;
    //    data2 = 0 ;
        tailflag = TAILER_FLAG_VALUE ;
    }
} ;



#define DEFP_G_BEGIN( type_name , cmd_value ) \
     struct type_name \
     { \
        tagHeader __header ; \
        inline type_name() \
        { \
          __header.cmd = cmd_value ; \
          __header.data_len = sizeof( type_name ) - sizeof( tagHeader ) - sizeof( tagTailer ); }


#define DEFP_G_END tagTailer __tailer ; } ;


我想用perl取到这个返回包。怎么都不行,没有任何返回的信息。请达人指示下。
用sysread($buf,SOCKET,0,2000);
把server端的回传传进$buf中..
再用unpack转成16进制的内容...或其他你需要的内容...
谢谢apile