problem with fsockopen & fgets

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Colin Bell

    problem with fsockopen & fgets

    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($serv er, $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.c om

    Thanks
    Colin Bell
  • Michael Austin

    #2
    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($serv er, $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.c om
    >
    > Thanks
    > Colin Bell[/color]


    --
    Michael Austin.
    Consultant - Available.
    Donations welcomed. Http://www.firstdbasource.com/donations.html
    :)

    Comment

    • Manuel Lemos

      #3
      Re: problem with fsockopen &amp; 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.




      --

      Regards,
      Manuel Lemos

      PHP Classes - Free ready to use OOP components written in PHP
      Free PHP Classes and Objects 2026 Versions with PHP Example Scripts, PHP Tutorials, Download PHP Scripts, PHP articles, Remote PHP Jobs, Hire PHP Developers, PHP Book Reviews, PHP Language OOP Materials


      PHP Reviews - Reviews of PHP books and other products


      Metastorage - Data object relational mapping layer generator

      Comment

      Working...