我有以下代码:
$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中使用套接字发送和接收十六进制?
答案 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));
(一次处理一个输入,以便您可以将它们分开)。