如何在PHP中使用套接字发送和接收十六进制?

时间:2013-07-16 18:31:22

标签: php sockets hex

我有以下代码:

$send1 = 0x01;
$send2 = 0x03;
$send3 = 0x00;
$send4 = 0x00;

我这样发送:

socket_write($spawn, $send1, strlen ($send1)) or die("Could not write output\n");
socket_write($spawn, $send2, strlen ($send2)) or die("Could not write output\n");
socket_write($spawn, $send3, strlen ($send3)) or die("Could not write output\n");
socket_write($spawn, $send4, strlen ($send4)) or die("Could not write output\n");

接收方得到它:

$result = socket_read ($socket, 1024) or die("Could not read server response\n");
    echo "Reply From Server  :".$result;

并且收到的数据是:1300,如何在php中使用套接字发送和接收十六进制?

1 个答案:

答案 0 :(得分:0)

PHP没有内置的十六进制数据类型,所以当你这样做时:

$send1 = 0x01;

这被php视为整数。 (尝试var_dump(0x01),你会得到int(1)) 因此,您可以将数据作为字符串发送,并在接收方处理它,如下所示:

$send1 = "0x01";
$send1 = "0x02";
$send1 = "0x03";
$send1 = "0x04";

或者您可以通过套接字发送整数值,然后将它们转换为十六进制值以便在接收端进行处理:

$send1 = 1;
$send2 = 2;
$send3 = 3;
$send4 = 4;

在接收端:

var_dump(dec2hex($result));

(一次处理一个输入,以便您可以将它们分开)。