Reply to Re: Ping+Port Routine?

Your name:

Reply:


Posted by Adam on 09/30/05 09:16

On Mon, 26 Sep 2005 13:11:20 -0500, Jerry Stuckle wrote:

>I really wish I could be more help here - but this is a problem I
>haven't run into before.

Jerry - success!!!

I finally got it working - but what an ordeal!!

1) It seems that socket support in PHP is "flakey" to say the least. I
followed a few of the bug threads on PHP.net - some seem to indicate
that old bugs have been re-inroduced in PHP5 :-(

2) A lot of the socket related functions don't work on the Win32 PHP
exes (probably because the socket support isn't "pre-compiled" <??>.

3) The documentation is really far from clear - particularly with
vital differences due to the "connection-less state" of UDP.

4) For the life of me I *still* can't get fread() to work - fwrite()
works fine.

Anyway - it shows that the firewall was never the problem.

So ... thanks for persevering with me!

Adam.

==========================
Here's the code:

Eventually, the script will loopo through a D/B query, but here's a
temporary loop through the 2 local test sim servers:

First the "hello" message gets sent:

$sites_array = array("192.168.1.20", "192.168.1.126");
foreach ($sites_array as $site_ip) {
$remote_IP = 'udp://';
$remote_IP .= $site_ip;
$portNumber = 2934;
$handle = fsockopen($remote_IP, $portNumber, $errno, $errstr,
2);
if (!$handle) {
echo "$errno : $errstr <br/>";
}
socket_set_timeout ($handle, 2);
$write = fwrite($handle, $hello);
if (!$write) {
echo "OOPS! Error writing to port: $portNumber.<br/>";
} else {
echo "Query sent to $remote_IP : $portNumber. <br/>";
};
fclose($handle);


Then the read of the response (note the use of socket_set_option() to
set the time-out etc.). Also, socket_recvfrom() seemed to work as
well.

if (!$sock=socket_create(AF_INET,SOCK_DGRAM,SOL_UDP)) {
echo "<b>Error:</b> Failed to create socket,
".socket_strerror(socket_last_error($sock))."<br>\n";
} elseif (!socket_bind($sock,"0.0.0.0",2934)) {
echo "<b>Error:</b> Failed to bind socket,
".socket_strerror(socket_last_error($sock))."<br>\n";
socket_close($sock);
} else {
socket_set_option($sock,SOL_SOCKET,SO_REUSEADDR,1);
socket_set_option($sock,SOL_SOCKET,SO_RCVTIMEO,
array("sec"=>4, "usec"=>0));
//$size=socket_recvfrom($sock,$buf,65535,1,$clientIP,$clientPort);
$buf=@socket_read($sock,2048);
if ($buf===FALSE) {
//echo "<b>Error:</b> Returned false,
".socket_strerror(socket_last_error($sock))."<br>\n";
echo "<b>OFFLINE</b>";
} else {
echo strlen($buf) . ":" . $buf;
}
echo "<hr>";
flush();
socket_close($sock);
}
};

======================

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация