PHP socket

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Boniface Frederic

    PHP socket

    Hello,

    I need to check if a user has properly open his port on his computer. He
    will call a script specifing the port he want to use and the script will
    have to check if he can open a socket on the IP:Port.
    Here is a what I have tried but it doesn't work, even if the port is
    properly open :

    -----------------------------Script ------------------
    <?php
    ob_implicit_flu sh();

    if (($sock = socket_create(A F_INET, SOCK_STREAM, SOL_TCP)) < 0)
    {
    die("socket_cre ate() failed : " . socket_strerror ($sock) . "\n");
    }

    if (($ret = socket_connect( $sock, $address, $port)) < 0)
    {
    die("socket_con nect() failed : raison : " . socket_strerror ($ret) .
    "\n");
    }

    echo "connected\ n";

    socket_close($s ock);
    ?>
    -------------------------End Script ---------------------

    Any suggestions ? Thanks in advance.

    Fred.


  • Steve

    #2
    Re: PHP socket

    [color=blue]
    > Here is a what I have tried but it doesn't work, even if the port is
    > properly open :[/color]

    What doesn't work? What does your browser display? What are the error
    messages? What OS is your server running? What version? What version of
    PHP are you using? So many questions, so little time...

    ---
    Steve

    Comment

    • Adam

      #3
      Re: PHP socket

      On Mon, 3 Oct 2005 23:08:23 +0200, Boniface Frederic wrote:
      [color=blue]
      >Hello,
      >
      >I need to check if a user has properly open his port on his computer. He
      >will call a script specifing the port he want to use and the script will
      >have to check if he can open a socket on the IP:Port.
      >Here is a what I have tried but it doesn't work, even if the port is
      >properly open :
      >
      >-----------------------------Script ------------------
      ><?php
      >ob_implicit_fl ush();
      >
      >if (($sock = socket_create(A F_INET, SOCK_STREAM, SOL_TCP)) < 0)
      >{
      > die("socket_cre ate() failed : " . socket_strerror ($sock) . "\n");
      >}
      >
      >if (($ret = socket_connect( $sock, $address, $port)) < 0)
      >{
      > die("socket_con nect() failed : raison : " . socket_strerror ($ret) .
      >"\n");
      >}
      >
      >echo "connected\ n";
      >
      >socket_close($ sock);
      >?>
      >-------------------------End Script ---------------------
      >
      >Any suggestions ? Thanks in advance.[/color]

      I've been messing with just this lately - see the thread "Ping+Port
      Routine". It's not that old.

      In short, it's a nightmare!

      1) Depends on which build of PHP - whether it was compiled with socket
      support.

      2) OS Dependent. Many socket functions don't appear to work on a Win32
      setup.

      3) Contrary to what it says on the PHP bugtracker, I think many of the
      socket routines still have bugs. Some even appear to have been
      re-introduced in PHP5.

      4) Check whether a firewall is blocking things.

      5) Set up a port "sniffer" (Ethereal or suchlike) to see whether
      packets are a actually leaving/arriving (though a firewall can still
      block these).

      6) I found that a socket sometimes gets "blocked" with an error - even
      when the [code] error has been fixed. Try it with another port (that
      you know is open). After a time, I've found I can re-use the original
      connection. There must be a timeout somewhere.

      Adam.

      Comment

      Working...