2009-06-11 7 views
0
$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); 

ソケットが応答を待っているため、 最大待機時間をどのように定義できますか?PHPソケットは、待ち時間の最大値を定義します

答えて

2

これは、機能socket_set_timeout()で行います。

socket_set_timeout($socket, 0, 500); 

誰かがsetting the socket to non-blocking modeによってブロックせずに接続しようとしているかどうかをチェックすることができます:1/2秒タイムアウトの例

socket_set_blocking($socket, 0); 
+0

socket_set_timeout($ socket、3、500); どこに置くか? 私は試しましたが、動作していません。 –

+0

socket_read()を呼び出す前に、タイムアウト値を設定する必要があります。本当にうまくいかない場合は、error_reporting(E_ALL)を有効にする必要があります – soulmerge

0

それとも

socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec'=>10, 'usec'=>0)); 
+0

それはありがとうございます! –

0

を私は知りません同じ問題がsocket_set_timeout()で現れても、stream_set_timeout()を深刻に使用していると、PHPが時間制限を指定した時間の2倍に設定していました。だから60秒と言ったら、実際にはちょうど2分前に聞き終えた。実際には、希望の秒数をとり、stream_set_timeout()で使用する値を取得するために500000を掛けなければなりませんでした。

関連する問題