UDP 通訊設置超時時間


<?php
function Send_socket_xdcoder_udp($service_port, $address, $in) { 
	//采用php socket技術使用UDP協議連接設備 
	$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); 
     //設置超時時間為兩秒 @socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 2, "usec" => 0)); //發送命令 @socket_sendto($socket, $in, strlen($in), 0, $address, $service_port); @socket_recvfrom($socket, $buffer, 1024, MSG_WAITALL, $address, $service_port); //關閉連接 socket_close($socket);
     //如果服務端2s未返回數據 if (!empty($buffer)) { return $buffer; } else { echo "err"; } } Send_socket_xdcoder_udp(8888, '127.0.0.1', '11111');

  因為udp通訊是不可靠的通訊,有時客戶端已經發送了消息,但是服務端可能沒收到,這時客戶端就會一直等待服務端的返回,導致程序一直死等,如果給udp設置一個超時時間,超過兩秒未返回數據,就返回err。避免卡死。

(如果只有一個客戶端和服務端在進行通訊,一般不會卡死,但是超過兩個的話,會出現卡死的情況,所以設置超時時間,可以避免這種情況)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM