Connecting Tech Pros Worldwide Help | Site Map

problem with fsockopen & fgets

Colin Bell
Guest
 
Posts: n/a
#1: Jul 17 '05
I'm stuck on a problem with getting data from a XML data stream. This
stream is large and trying to use fsockopen to get the stream down.

I've tetsed the code by telneting into the machine/port but I am
getting some of the data but not all. I don't know the stream size.

Code snippit below:

function txrx($server, $port, $tx){


$rx = "";
if ($server == "") {
$rx = "Error - Missing Server";
}
if ($port == "") {
$rx = "Error - Missing Port";
}
$fp = fsockopen($server, $port);
if($fp) {
fputs($fp, $tx);
$rx .= fread($fp, 2048);
fclose($fp);
}
return $rx;

}


Any suggestions ?

Can you please post to the group and send me an e-mail at
348bell@gmail.com

Thanks
Colin Bell
Michael Austin
Guest
 
Posts: n/a
#2: Jul 17 '05

re: problem with fsockopen & fgets


Colin Bell wrote:
[color=blue]
> I'm stuck on a problem with getting data from a XML data stream. This
> stream is large and trying to use fsockopen to get the stream down.
>
> I've tetsed the code by telneting into the machine/port but I am
> getting some of the data but not all. I don't know the stream size.
>
> Code snippit below:
>
> function txrx($server, $port, $tx){
>
>
> $rx = "";
> if ($server == "") {
> $rx = "Error - Missing Server";
> }
> if ($port == "") {
> $rx = "Error - Missing Port";
> }
> $fp = fsockopen($server, $port);
> if($fp) {
> fputs($fp, $tx);
> $rx .= fread($fp, 2048);
> fclose($fp);
> }
> return $rx;
>
> }
>
>
> Any suggestions ?[/color]

Yes. you are only reading the first 2048 bytes. Look at this example FROM THE
DOCS and compare it to yours... the problem should be obvious...

<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";

fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>
[color=blue]
>
> Can you please post to the group and send me an e-mail at
> 348bell@gmail.com
>
> Thanks
> Colin Bell[/color]


--
Michael Austin.
Consultant - Available.
Donations welcomed. Http://www.firstdbasource.com/donations.html
:)
Manuel Lemos
Guest
 
Posts: n/a
#3: Jul 17 '05

re: problem with fsockopen & fgets


Hello,

On 08/20/2004 11:32 AM, Colin Bell wrote:[color=blue]
> I'm stuck on a problem with getting data from a XML data stream. This
> stream is large and trying to use fsockopen to get the stream down.
>
> I've tetsed the code by telneting into the machine/port but I am
> getting some of the data but not all. I don't know the stream size.[/color]

If this is being sent to an HTTP server, you need to follow the HTTP
protocol. In that case you may want to try this HTTP client class that
provides a way to send files either by emulating POST form uploading or
just by submiting the XML file in the request body.

http://www.phpclasses.org/httpclient


--

Regards,
Manuel Lemos

PHP Classes - Free ready to use OOP components written in PHP
http://www.phpclasses.org/

PHP Reviews - Reviews of PHP books and other products
http://www.phpclasses.org/reviews/

Metastorage - Data object relational mapping layer generator
http://www.meta-language.net/metastorage.html
Closed Thread