我已经编程arduino按下按钮时将按钮发送到udp端口8888,当我使用第三方软件(如Socket测试)时工作正常,但我正在尝试使用下面的PHP代码来接收按摩。
代码(Not my Code)有效,但结果会在我们发生致命错误时显示,而不是在我发送按摩时按下(按下按钮)
下面是结果样本(所有结果一起显示,而不是按下按钮时):
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);