2

这是 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. 

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

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

任何提示lz~

4

1 回答 1

3

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

过去,我已经为二进制协议(甚至加密)实现了 UDP 服务器和客户端,它很丑,但它可以工作。您唯一应该注意的是字节序。

于 2012-05-18T08:00:40.630 回答