Php: отправить байтовую строку через UDP

Моя цель : отправить UDP-сообщение в php. Сообщение должно быть строкой байта.

Это мой тестовый код

const TIMEOUT = 5;
const PORT = 8888;
const IP = "255.255.255.255";
const STR = "test";

$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);
socket_set_option($sock,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>TIMEOUT,"usec"=>0));
socket_sendto($sock, STR, strlen(STR), 0, IP, PORT);

//wait the responses for TIMEOUT sec
while(true) {
$ret = @socket_recvfrom($sock, $buf, 20, 0, $ipDevice, $portDevice);
if($ret === false) break;
echo "-".$buf." - ".$ipDevice.":".$portDevice . "<br>";
}
socket_close($sock);

Но socket_sendto требуется параметр строки для отправки (моя переменная STR).

Итак, вопрос: Как я могу преобразовать строку (моя переменная STR) в строку байтов ?

2

Решение

Вот как вы можете сделать UDP-трансляцию:

<?php
$broadcast_string = "test";
$port = 1234;
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);
socket_sendto($sock, $broadcast_string, strlen($broadcast_string), 0, '255.255.255.255', $port);
socket_close($sock);
?>

РЕДАКТИРОВАТЬ:
Вот как конвертировать string в строку байтов:

$byte_array = unpack('C*', 'The quick fox jumped over the lazy brown dog');
var_dump($byte_array);  // $byte_array should be int[] which can be converted
// to byte[] since values are range of 0 - 255
1

Другие решения

Других решений пока нет …