Попытка передать шестнадцатеричные значения через форму с использованием php для отправки через сокеты TCP, как показано ниже
<html>
<body>
<form action="fsock.php" method="post">
HEX: <input type="text" name="hex"><br>
<input type="submit">
</form>
<?php
function strToHex($string){
$hex = '';
for ($i=0; $i<strlen($string); $i++){
$ord = ord($string[$i]);
$hexCode = dechex($ord);
$hex .= substr('0'.$hexCode, -2);
}
return strToUpper($hex);
}
$hex = strToHex($_POST["hex"]);
$fp = fsockopen("192.168.1.108", 48879);
if (!$fp) {
echo "Unable to open\n";
} else {
$in1 = "\x00\x07\x04";
$in2 = "\x01\x07\x01";
fwrite($fp, $in1);
fwrite($fp, $in2);
fwrite($fp, $hex);
stream_set_timeout($fp, 1);
$res = fread($fp, 2000);
$info = stream_get_meta_data($fp);
fclose($fp);
if ($info['timed_out']) {
echo 'Connection timed out!';
} else {
echo $res;
}
}
?>
</body>
</html>
Как мне получить $ _POST [«ex»] в формате $ in1 и $ in2?
Я не могу заставить это работать с советами ниже!
Я использую следующее в качестве ввода \ x01 \ x07 \ x01, но я получаю только каждый отдельный символ, преобразованный в шестнадцатеричный, а не байтовый.
Я хочу иметь точно такой же вывод, как $ in2, как?
Задача ещё не решена.
Других решений пока нет …