检查PHP UDP fread是否收到回复/设置超时

检查PHP UDP fread是否收到回复/设置超时,php,udp,Php,Udp,我正在创建一个网站,使用UDP连接到本地网络上的windows程序 我遇到的问题是,当没有对fread的回复时,当执行时间达到30秒时,代码会出现致命错误 由于UDP不检查是否有连接,因此似乎无法判断发生了什么或捕获30秒致命错误 这是我目前的代码 $fp = fsockopen("udp://1.10.100.28", 24, $errno, $errstr,3); if (!$fp) { echo "ERROR: $errno - $errstr<br /&g

我正在创建一个网站,使用UDP连接到本地网络上的windows程序

我遇到的问题是,当没有对
fread
的回复时,当执行时间达到30秒时,代码会出现致命错误

由于UDP不检查是否有连接,因此似乎无法判断发生了什么或捕获30秒致命错误

这是我目前的代码

$fp = fsockopen("udp://1.10.100.28", 24, $errno, $errstr,3);

    if (!$fp) {
        echo "ERROR: $errno - $errstr<br />\n";
    } else {
     $value = $_POST["sendvalue"];
     $out = "setwarpterm 1 1 x ".$value."\r";

     $write = fwrite($fp, $out);

     if($_POST["read"] == "yes"){
         echo fread($fp, 3000);
     }

        fclose($fp);
    }
$fp=fsockopen(“udp://1.10.100.28“,24,$errno,$errstr,3);
如果(!$fp){
echo“错误:$errno-$errstr
\n”; }否则{ $value=$_POST[“sendvalue”]; $out=“setwarpterm 1 x”。$value.\r”; $write=fwrite($fp,$out); 如果($_POST[“read”]=“yes”){ echo-fread($fp,3000); } fclose($fp); }
超时不起作用,因为它不在我的fread正上方

stream_set_timeout($fp, 2);
echo fread($fp, 3500);

这确实起作用,使fread返回空字符串。

超时不起作用,因为它不在fread的正上方

stream_set_timeout($fp, 2);
echo fread($fp, 3500);

这确实有效,并使fread返回一个空字符串。

您到底想做什么?当脚本可以连接到程序时,它已经可以工作了。它只是向程序发送一个小字符串,然后返回一个处理过的字符串。问题是当连接失败时。UDP没有“连接”
fread
如果超时后无法获取任何数据,则返回空字符串。如果你想处理这种情况,你可以检查一下。用
echo“hello”。fread(fp,3000美元)如果服务器没有响应,它不会回显任何内容。另外,在致命错误出现之前,脚本输出的其余部分中没有回声。您到底想做什么?当脚本可以连接到程序时,脚本已经工作了。它只是向程序发送一个小字符串,然后返回一个处理过的字符串。问题是当连接失败时。UDP没有“连接”
fread
如果超时后无法获取任何数据,则返回空字符串。如果你想处理这种情况,你可以检查一下。用
echo“hello”。fread(fp,3000美元)如果服务器没有响应,它不会回显任何内容。此外,在发生致命错误之前,脚本输出的其余部分中没有任何回声