【发布时间】:2022-11-12 04:23:48
【问题描述】:
我想通过 TCP 协议向第三方服务器发送命令,在他们的文档中,他们列出了以下命令数据格式:
| Syntax | Bytes | Value |
|---|---|---|
| card_id | 4 | 0x12345678 |
| param1 | 2 | 0 |
| param2 | 1 | 1 |
| param3 | 1 | 0 |
| time | 4 | time_t corresponding to 2004-6-1 13:00:00 |
| data_len | 1 | 08 |
| data_body | Variable (determinedby data_len) | "12345678" |
我想在php中使用socket_write函数来发送数据包,所以我的问题是如何转换这些值来发送它?
首先:我将每个值转换为十六进制,然后将它们放在一个字符串变量中(每个字节代表 2 个十六进制字符)。例如:如果值为 1 字节,则 1 将为 01 / 如果值为 2 字节,则 1 将为 0001
其次:我将每个值转换为二进制(01),然后将它们放在一个字符串变量中(每个字节代表 8 位)。例如:如果值为 1 字节,则 1 将为 00000001 / 如果值为 2 字节,则 1 将为 00000000 000000001
请任何人都可以帮助我知道如何在 php 中表示通过 tcp 套接字发送的命令数据?我有点困惑。
【问题讨论】:
-
使用
pack()函数。 -
如何使用它我有多种类型的整数、十六进制和字符串数据。你能给我一个例子吗?
-
我发布了一个答案,但您似乎甚至没有阅读文档,因为它解释了如何做到这一点。
标签: php sockets tcp binary hex