Я запрограммировал arduino отправлять массаж на порт udp 8888 при нажатии кнопки, и он работает нормально, когда я использовал стороннее программное обеспечение, такое как Socket test, но я пытаюсь использовать приведенный ниже код php для получения массажа.
Код(Не мой код) работает, но результат появляется, когда мы получаем фатальные ошибки, а не когда я отправляю массаж (нажмите кнопку)
Ниже приведен пример результата (все результаты отображаются вместе, а не когда я нажимаю кнопку):
Socket created Socket bind OK Waiting for data ... 10.10.1.48 : 8888 --YellowWaiting for data ... 10.10.1.48 : 8888 -- GreenWaiting for data ... 10.10.1.48 : 8888 -- YellowWaiting for data ... 10.10.1.48 : 8888 -- GreenWaiting for data ...
Fatal error: Maximum execution time of 120 seconds exceeded in C:\xampp\htdocs\Push\udp.php on line 38
Ниже приведен код:
if(!($sock = socket_create(AF_INET, SOCK_DGRAM, 0)))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Couldn't create socket: [$errorcode] $errormsg \n");
}
echo "Socket created \n";
if ( ! socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1))
{
echo socket_strerror(socket_last_error($sock));
exit;
}
// Bind the source address
if( !socket_bind($sock, "0.0.0.0" , 8888) )
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not bind socket : [$errorcode] $errormsg \n");
}
echo "Socket bind OK \n";
//Do some communication, this loop can handle multiple clients
while(1)
{
echo "Waiting for data ... \n";
//Receive some data
$r = socket_recvfrom($sock, $buf, 512, 0, $remote_ip, $remote_port);
echo "$remote_ip : $remote_port -- " . $buf;
usleep(100000); // debuging purpose
ob_flush();
flush();
//Send back the data to the client
socket_sendto($sock, "OK " . $buf , 100 , 0 , $remote_ip , $remote_port);
}
socket_close($sock);
Задача ещё не решена.
Других решений пока нет …