是否有可能在PHP中生成类似c的二进制数据(结构)

时间:2012-05-18 07:57:09

标签: php

这是C代码。

#pragma pack(push,1)
typedef struct _DATA_PKT_D1
{
    char    length[2];
    char    command[2];
    char    src[64];
    char    lordId;
    char    user_id[20];
    int     level;
    char    isFine;
    char    company_code;
}DATA_PKT_D1;
#pragma pack(pop)

DATA_PKT_D1 *pkt = malloc(sizeof(DATA_PKT_D1);

//send pkt through TCP socket. 

数据包是95byte。 我知道php也有tcp socket功能。 但是,有可能在PHP中使数据包完全相同吗? (我的意思是95字节) 并通过TCP发送数据?

我怀疑php有二进制级结构功能......

任何提示plz~

1 个答案:

答案 0 :(得分:3)

是的,用PHP构建二进制数据是完全可能的,虽然有点,不,很多,不如C更优雅。你需要pack / unpack函数,让你从php变量编写二进制缓冲区。见http://php.net/manual/en/function.pack.php

我过去曾为二进制协议(甚至是加密的)实现了UDP服务器和客户端,它很难看,但它很有效。你要特别注意的是字节序。