我正在使用树莓作为Web服务器(Apache2,php5和mysql)。一切顺利,但有一点:
我建造了一种用于控制陈列室的遥控器。每个按钮都向一个php页面发出一个POST请求,该页面上有一个套接字改变了陈列室中另一台PC中某些软件的内容。
唯一不起作用的是“监听”按钮。它工作1或2次,然后我需要重新启动覆盆子。 其他带有Windows的pc中的相同php页面没有问题。
然而,这是帖子:
data ={};
data = {'watchout' : cmd};
jQuery.ajax({
url: ajaxurl,
type: "POST",
data: data,
timeout: 999
});
setTimeout(function(){
data ={};
data = {'watchout' : run};
jQuery.ajax({
url: ajaxurl,
type: "POST",
data: data,
timeout: 1000,
});
},3000);
这里的“ajaxurl”是一个php文件,它使用此函数读取帖子并发送cmd和run命令以监听:
function udp($out_port,$out_ip,$out_message) {
//echo "<div>UDP</div>";
/*
Simple php udp socket client
*/
//Reduce errors
error_reporting(~E_WARNING);
$server = $out_ip;
$port = $out_port;
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";
//Communication loop
//while(1)
//{
//Take some input to send
//echo 'Enter a message to send : ';
//$input = fgets(STDIN);
$input = $out_message;
echo 'send:"'.$input.'",to: '.$server.' at: '.$port;
//Send the message to the server
if( ! socket_sendto($sock, $input , strlen($input) , 0 , $server , $port))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not send data: [$errorcode] $errormsg \n");
}
//Now receive reply from server and print it
if(socket_recv ( $sock , $reply , 2045 , MSG_WAITALL ) === FALSE)
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not receive data: [$errorcode] $errormsg \n");
}
echo "Reply : $reply";
//}
exit;
}
//---------------------
//END UDP
//--------------------
我重复一遍。 Windows中的这段代码效果很好!对我能做什么的任何想法?
谢谢!