<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2745.2800" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>I am developing a sockets interface, in PHP running 
under Fedora Core 5, to receive requests and return data. See below is the 
program in its most basic form. It accepts requests and returns data 
but&nbsp;the program&nbsp;waits on the socket_read and only moves on when either 
data is received or the sending system terminates the connection. This means 
that other users/systems&nbsp;cannot gain access. I have hunted around the 
Internet and tried various combinations without success.&nbsp;</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Any suggestions?</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Thanks, Brendan&nbsp;&nbsp;</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>#!/usr/local/bin/php -q<BR>&lt;?php<BR>// Simple 
sockets receive program<BR>error_reporting (E_ALL);</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>/* Allow the script to hang around waiting for 
connections. */<BR>set_time_limit (0);</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>/* Turn on implicit output flushing so we see what 
we're getting<BR>&nbsp;* as it comes in. */<BR>ob_implicit_flush ();<BR>print 
"Started\n";</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>$address = '192.168.40.19';<BR>// PORT NEEDS TO BE 
PERMITTED THROUGH FIREWALL<BR>$port = 21244;</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>if (($sock = socket_create (AF_INET, SOCK_STREAM, 
0)) &lt; 0) {<BR>&nbsp;&nbsp;&nbsp; echo "socket_create() failed: reason: " . 
socket_strerror ($sock) . "\n";<BR>}</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>if (($ret = socket_bind ($sock, $address, $port)) 
&lt; 0) {<BR>&nbsp;&nbsp;&nbsp; echo "socket_bind() failed: reason: " . 
socket_strerror ($ret) . "\n";<BR>}</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>if (($ret = socket_listen ($sock, 5)) &lt; 0) 
{<BR>&nbsp;&nbsp;&nbsp; echo "socket_listen() failed: reason: " . 
socket_strerror ($ret) . "\n";<BR>}</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>do {<BR>print "In loop\n";<BR>&nbsp;&nbsp;&nbsp; if 
(($msgsock = socket_accept($sock)) &lt; 0) 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "socket_accept() failed: 
reason: " . socket_strerror ($msgsock) . 
"\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; 
}<BR>print "After accept\n";<BR>&nbsp;&nbsp;&nbsp; /* Send instructions. 
*/<BR>&nbsp;&nbsp;&nbsp; $msg = "\nWelcome to the PHP Test Server. \n" 
.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "To quit, type 'quit'. To shut 
down the server type 'shutdown'.\n";<BR>&nbsp;&nbsp;&nbsp; 
socket_write($msgsock, $msg, strlen($msg));<BR>print "Above inner 
loop\n";<BR>&nbsp;&nbsp;&nbsp; do 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (FALSE === ($buf = 
socket_read ($msgsock, 2048, PHP_NORMAL_READ))) 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo 
"socket_read() failed: reason: " . socket_strerror ($ret) . 
"\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
break 2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!$buf = trim ($buf)) 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($buf == 'quit') 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($buf == 'shutdown') 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
socket_close 
($msgsock);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
break 2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $talkback = "PHP: You said 
'$buf'.\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; socket_write 
($msgsock, $talkback, strlen 
($talkback));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo 
"$buf\n";<BR>&nbsp;&nbsp;&nbsp; } while (true);<BR>&nbsp;&nbsp;&nbsp; 
socket_close ($msgsock);<BR>} while (true);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>socket_close 
($sock);<BR>?&gt;<BR></FONT></DIV></BODY></HTML>