20,398
社区成员




<?php
$host = "192.168.0.190";
$port = 8235;
$ip = '192.168.0.50';
$ipstr ='';
$ip_arr=explode('.',$ip);//分隔ip段
foreach ($ip_arr as $value)
{
$iphex= strtoupper(dechex($value));//将每段ip转换成16进制
if(strlen($iphex)<2)//255的16进制表示是ff,所以每段ip的16进制长度不会超过2
{
$iphex='0'.$iphex;//如果转换后的16进制数长度小于2,在其前面加一个0
//没有长度为2,且第一位是0的16进制表示,这是为了在将数字转换成ip时,好处理
}
$ipstr.="\x".$iphex;//将四段IP的16进制数连接起来,得到一个16进制字符串,长度为8
}
echo($ipstr);
$command = "\x55\xAA\xA5\x02";
echo $command;
$message = "\x55\xAA\xA5\x02$ipstr";
echo $message;
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
// connect to server
$result = socket_connect($socket, $host, $port) or die("Could not connect to server\n");
// send string to server
socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");
// get server response
if($result == 1){
socket_close($socket);
echo "close success";
}
else{
echo "connect failure.";
}
?>
$ip = '192.168.0.50';
$ipstr = join('', array_map('chr', explode('.', $ip)));
或者更直接的$ipstr = pack('N', ip2long($ip));
补充:"\x55\xAA\xA5\x02" 这样的字符串常量,是在 php 语法解析期间转换成内码的,不能在运行期间拼装