$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_bind($socket, $ip_server , $port);
socket_sendto($socket, $ascii_egyben_kimenet, strlen($ascii_egyben_kimenet), 0, $ip_plc , $port);
$valasz_kimenet=socket_read($socket, 256);
因为socket_read服务器正在等待答案... 我如何定义等待的最长时间?
答案 0 :(得分:2)
使用函数socket_set_timeout()
执行此操作。 1/2秒超时的示例:
socket_set_timeout($socket, 0, 500);
您可以通过setting the socket to non-blocking mode检查某人是否正在尝试连接而不会阻止:
socket_set_blocking($socket, 0);
答案 1 :(得分:1)
我不知道socket_set_timeout()是否出现了同样的问题,但是在严重使用stream_set_timeout()的情况下,我发现PHP将时间限制设置为我指定的两倍。所以,如果我告诉它60秒,那实际上是在我停止收听之前的两分钟。我实际上必须花费所需的秒数并乘以500000以获得在stream_set_timeout()中使用的值。
答案 2 :(得分:0)
或者
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec'=>10, 'usec'=>0));