ID:               15813
 Comment by:       ggarber at searchtec dot com
 Reported By:      karl at crantorland dot com
 Status:           Bogus
 Bug Type:         Sockets related
 Operating System: windows nt 4.0
 PHP Version:      4.1.1
 New Comment:

Here's your problem and this works for me.
Took me a few days to figure this one out.
Right now I'm working on serial communications in php.
It seems it can be done but only with some effort.
(under windows nt, xp, 95, etc)
well here's the telnet code..
------------------
function telnet_get_til_input($socket=0)
{
$response = '';

if ($socket === 0) { return 0; }

$line = fgets($socket, 1024);
$response = $line;

while ((!feof($socket)) and (!($line === false)))
  {
   $line = fgets($socket, 1024);
   if ($debugging) { echo $line; }
   $response .= $line;
  }

return $response;
}; // end function telnet_get_til_input
------------------
you might also want to make sure you put this code to connect
------------------
function telnet_connect($server='127.0.0.1',$port='23')
{
$socket = 0;
$socket = fsockopen($server, $port);
socket_set_timeout($socket,2,0);
$response = telnet_get_til_input($socket);

return $socket;
}; // end function telnet_connect
------------------
and here's the disconnect code
------------------
function telnet_quit($socket)
{
return fclose($socket);
}; // end function telnet_quit
------------------
you might want to edit those a lot to have extra commands in them.. but
they work good.
let's get some posts on com ports under windows and linux for php..
talk about limited..


Previous Comments:
------------------------------------------------------------------------

[2002-07-01 17:37:28] [EMAIL PROTECTED]

Thank you for taking the time to report a problem with PHP.
Unfortunately your version of PHP is too old -- the problem
might already be fixed. Please download a new PHP
version from http://www.php.net/downloads.php

If you are able to reproduce the bug with one of the latest
versions of PHP, please change the PHP version on this bug report
to the version you tested and change the status back to "Open".
Again, thank you for your continued support of PHP.



------------------------------------------------------------------------

[2002-03-01 11:24:41] exonic at signuts dot net

I experience the same problem. I'm using PHP4.1.2

------------------------------------------------------------------------

[2002-03-01 11:21:30] karl at crantorland dot com

PHP is unrelyable in telling when data has arrived on a socket. 
socket_get_status() once the feof has resulted in true will never reset
even when data has arrived.  I have done extensive testing.  I connect
to an smtp server so i know the server side is working.  this is what
is suppose to happen:

1)client connects
2)server accepts and sends 220 ready reponse
3)client recieves 220 and sends EHLO to server
4)server recives EHLO and sends back 250 reponse along with supported
options
5)client recives 250 reponse(smtp goes on with more stuff but this is
the point where my script would disconnect)

i use a while(!feof($socket)) loop to get all the data off the port. 
the first one works and then after that no matter what data arrives
feof($socket) is always true.

socket_get_status($socket) confirms that php thinks no more has arrived
but when i look at the server i can see that data has been sent.

This was all done under 4.1.0.  i upgraded to 4.1.1 and now nothing
works at all.

testing code is here.  feel free to connect to the server and port
specified for testing.
http://dcl.nvps.net/socket.phps
http://dcl.nvps.net/socket.php

If i am wrong about this and someone has a script that proves me wrong
please email it to me and disregard this post.

------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=15813&edit=1

Reply via email to