   #PHP Manual Function Reference snmpwalkoid socket_accept

   PHP Manual
   Prev  Next
   ______________________________________________________________________

C. Socket functions

Introduction

   The socket extension implements a low-level interface to the socket
   communication functions based on the popular BSD sockets, providing
   the possibility to act as a socket server as well as a client.

   For a more generic client-side socket interface, see
   stream_socket_client(), stream_socket_server(), fsockopen(), and
   pfsockopen().

   When using these functions, it is important to remember that while
   many of them have identical names to their C counterparts, they often
   have different declarations. Please be sure to read the descriptions
   to avoid confusion.

   Those unfamiliar with socket programming can find a lot of useful
   material in the appropriate Unix man pages, and there is a great deal
   of tutorial information on socket programming in C on the web, much of
   which can be applied, with slight modifications, to socket programming
   in PHP. The Unix Socket FAQ might be a good start.

   Warning

   This extension is EXPERIMENTAL. The behaviour of this extension --
   including the names of its functions and anything else documented
   about this extension -- may change without notice in a future release
   of PHP. Use this extension at your own risk.

Requirements

   No external libraries are needed to build this extension.

Installation

   The socket functions described here are part of an extension to PHP
   which must be enabled at compile time by giving the --enable-sockets
   option to configure.

     Note: IPv6 Support was added with PHP 5.0.0 .

Runtime Configuration

   This extension has no configuration directives defined in php.ini.

Resource Types

   This extension has no resource types defined.

Predefined Constants

   The constants below are defined by this extension, and will only be
   available when the extension has either been compiled into PHP or
   dynamically loaded at runtime.

   AF_UNIX (integer)

   AF_INET (integer)

   AF_INET6 (integer)

   SOCK_STREAM (integer)

   SOCK_DGRAM (integer)

   SOCK_RAW (integer)

   SOCK_SEQPACKET (integer)

   SOCK_RDM (integer)

   MSG_OOB (integer)

   MSG_WAITALL (integer)

   MSG_PEEK (integer)

   MSG_DONTROUTE (integer)

   SO_DEBUG (integer)

   SO_REUSEADDR (integer)

   SO_KEEPALIVE (integer)

   SO_DONTROUTE (integer)

   SO_LINGER (integer)

   SO_BROADCAST (integer)

   SO_OOBINLINE (integer)

   SO_SNDBUF (integer)

   SO_RCVBUF (integer)

   SO_SNDLOWAT (integer)

   SO_RCVLOWAT (integer)

   SO_SNDTIMEO (integer)

   SO_RCVTIMEO (integer)

   SO_TYPE (integer)

   SO_ERROR (integer)

   SOL_SOCKET (integer)

   PHP_NORMAL_READ (integer)

   PHP_BINARY_READ (integer)

   SOL_TCP (integer)

   SOL_UDP (integer)

Socket Errors

   The socket extension was written to provide a useable interface to the
   powerful BSD sockets. Care has been taken that the functions work
   equally well on Win32 and Unix implementations. Almost all of the
   sockets functions may fail under certain conditions and therefore emit
   an E_WARNING message describing the error. Sometimes this doesn't
   happen to the desire of the developer. For example the function
   socket_read() may suddenly emit an E_WARNING message because the
   connection broke unexpectedly. It's common to suppress the warning
   with the @-operator and catch the error code within the application
   with the socket_last_error() function. You may call the
   socket_strerror() function with this error code to retrieve a string
   describing the error. See their description for more information.

     Note: The E_WARNING messages generated by the socket extension are
     in English though the retrieved error message will appear depending
     on the current locale (LC_MESSAGES):

   Warning - socket_bind() unable to bind address [98]: Die Adresse wird
   bereits verwendet

Examples

   Example 1. Socket example: Simple TCP/IP server

   This example shows a simple talkback server. Change the address and
   port variables to suit your setup and execute. You may then connect to
   the server with a command similar to: telnet 192.168.1.53 10000 (where
   the address and port match your setup). Anything you type will then be
   output on the server side, and echoed back to you. To disconnect,
   enter 'quit'.
   #!/usr/local/bin/php -q
   <?php
   error_reporting(E_ALL);
   /* Allow the script to hang around waiting for connections. */
   set_time_limit(0);
   /* Turn on implicit output flushing so we see what we're getting
   * as it comes in. */
   ob_implicit_flush();
   $address = '192.168.1.53';
   $port = 10000;
   if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
       echo "socket_create() failed: reason: " . socket_strerror($sock) .
   "\n";
   }
   if (($ret = socket_bind($sock, $address, $port)) < 0) {
       echo "socket_bind() failed: reason: " . socket_strerror($ret) .
   "\n";
   }
   if (($ret = socket_listen($sock, 5)) < 0) {
       echo "socket_listen() failed: reason: " . socket_strerror($ret) .
   "\n";
   }
   do {
       if (($msgsock = socket_accept($sock)) < 0) {
           echo "socket_accept() failed: reason: " .
   socket_strerror($msgsock) . "\n";
           break;
       }
       /* Send instructions. */
       $msg = "\nWelcome to the PHP Test Server. \n" .
           "To quit, type 'quit'. To shut down the server type
   'shutdown'.\n";
       socket_write($msgsock, $msg, strlen($msg));
       do {
           if (false === ($buf = socket_read($msgsock, 2048,
   PHP_NORMAL_READ))) {
               echo "socket_read() failed: reason: " .
   socket_strerror($ret) . "\n";
               break 2;
           }
           if (!$buf = trim($buf)) {
               continue;
           }
           if ($buf == 'quit') {
               break;
           }
           if ($buf == 'shutdown') {
               socket_close($msgsock);
               break 2;
           }
           $talkback = "PHP: You said '$buf'.\n";
           socket_write($msgsock, $talkback, strlen($talkback));
           echo "$buf\n";
       } while (true);
       socket_close($msgsock);
   } while (true);
   socket_close($sock);
   ?>

   Example 2. Socket example: Simple TCP/IP client

   This example shows a simple, one-shot HTTP client. It simply connects
   to a page, submits a HEAD request, echoes the reply, and exits.
   <?php
   error_reporting(E_ALL);
   echo "<h2>TCP/IP Connection</h2>\n";
   /* Get the port for the WWW service. */
   $service_port = getservbyname('www', 'tcp');
   /* Get the IP address for the target host. */
   $address = gethostbyname('www.example.com');
   /* Create a TCP/IP socket. */
   $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
   if ($socket < 0) {
       echo "socket_create() failed: reason: " . socket_strerror($socket)
   . "\n";
   } else {
       echo "OK.\n";
   }
   echo "Attempting to connect to '$address' on port '$service_port'...";
   $result = socket_connect($socket, $address, $service_port);
   if ($result < 0) {
       echo "socket_connect() failed.\nReason: ($result) " .
   socket_strerror($result) . "\n";
   } else {
       echo "OK.\n";
   }
   $in = "HEAD / HTTP/1.1\r\n";
   $in .= "Host: www.example.com\r\n";
   $in .= "Connection: Close\r\n\r\n";
   $out = '';
   echo "Sending HTTP HEAD request...";
   socket_write($socket, $in, strlen($in));
   echo "OK.\n";
   echo "Reading response:\n\n";
   while ($out = socket_read($socket, 2048)) {
       echo $out;
   }
   echo "Closing socket...";
   socket_close($socket);
   echo "OK.\n\n";
   ?>

   Table of Contents
   socket_accept -- Accepts a connection on a socket
   socket_bind -- Binds a name to a socket
   socket_clear_error -- Clears the error on the socket or the last error
          code

   socket_close -- Closes a socket resource
   socket_connect -- Initiates a connection on a socket
   socket_create_listen -- Opens a socket on port to accept connections
   socket_create_pair -- Creates a pair of indistinguishable sockets and
          stores them in fds.

   socket_create -- Create a socket (endpoint for communication)
   socket_get_option -- Gets socket options for the socket
   socket_getpeername --  Queries the remote side of the given socket
          which may either result in host/port or in a Unix filesystem
          path, dependent on its type.

   socket_getsockname --  Queries the local side of the given socket
          which may either result in host/port or in a Unix filesystem
          path, dependent on its type.

   socket_iovec_add -- Adds a new vector to the scatter/gather array
   socket_iovec_alloc --  Builds a 'struct iovec' for use with sendmsg,
          recvmsg, writev, and readv

   socket_iovec_delete -- Deletes a vector from an array of vectors
   socket_iovec_fetch -- Returns the data held in the iovec specified by
          iovec_id[iovec_position]

   socket_iovec_free -- Frees the iovec specified by iovec_id
   socket_iovec_set -- Sets the data held in iovec_id[iovec_position] to
          new_val

   socket_last_error -- Returns the last error on the socket
   socket_listen -- Listens for a connection on a socket
   socket_read -- Reads a maximum of length bytes from a socket
   socket_readv -- Reads from an fd, using the scatter-gather array
          defined by iovec_id

   socket_recv -- Receives data from a connected socket
   socket_recvfrom -- Receives data from a socket, connected or not
   socket_recvmsg -- Used to receive messages on a socket, whether
          connection-oriented or not

   socket_select --  Runs the select() system call on the given arrays of
          sockets with a specified timeout

   socket_send -- Sends data to a connected socket
   socket_sendmsg -- Sends a message to a socket, regardless of whether
          it is connection-oriented or not

   socket_sendto -- Sends a message to a socket, whether it is connected
          or not

   socket_set_block --  Sets blocking mode on a socket resource
   socket_set_nonblock -- Sets nonblocking mode for file descriptor fd
   socket_set_option -- Sets socket options for the socket
   socket_shutdown -- Shuts down a socket for receiving, sending, or
          both.

   socket_strerror -- Return a string describing a socket error
   socket_write -- Write to a socket
   socket_writev -- Writes to a file descriptor, fd, using the
          scatter-gather array defined by iovec_id
   ______________________________________________________________________

   Prev        Home          Next
   snmpwalkoid  Up  socket_accept
