Trouble with socket_select
| From: | Bruce Vander Werf | Date: | Wed, 22 May 2002 16:09:33 +0000 |
| Subject: | Trouble with socket_select | ||
| Groups: | php.general php.windows | ||
| Request: | Send a blank email to php-general+get-98759@lists.php.net to get a copy of this message | ||
Hi,
I am using PHP 4.2.1 under Windows XP. I am having trouble getting
socket_select to work on a UDP socket. Here is my code:
//Create socket
$socket = socket_create(AF_INET, SOCK_DGRAM, 0);
if ($socket < 0)
echo "unable to create socket(".socket_strerror($socket);
else
echo "OK";
//enable broadcasts
socket_setopt($socket, SOL_SOCKET, SO_BROADCAST, 1);
//first, a UDP broadcast command goes out
//I have verified with EtherPeek that this is indeed going out
if (socket_sendto($socket,$packet,$size,0,$IPBroadcast,$TCPIQPort) !=
$size)
echo "failed";
else
echo "OK";
//now call socket_select repeatedly for five seconds
$endtime = Time() + 5;
while (Time() < $endtime) {
$r = array($socket);
if (socket_select($r, $w=null, $e=null, 0) > 0) {
echo "\n<P>readable";
if (socket_recvfrom($socket, $buffer, 2048, 0, $addr, $port))
echo "\n<P>$buffer";
}
}
I never see $socket being readable, i.e. a return value from
socket_select greater than 0. I also can see in EtherPeek that UDP
packets are being sent back to this socket in response to the
broadcast.
Any help would be appreciated.
--Bruce
--
Bruce Vander Werf
brucev@cyberlink.com