downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
search for in the  

<Predefined ConstantsSocket Errors>
Last updated: Thu, 26 Jun 2008

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)) === false) {
   echo
"socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
}

if (
socket_bind($sock, $address, $port) === false) {
   echo
"socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}

if (
socket_listen($sock, 5) === false) {
   echo
"socket_listen() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}

do {
   if ((
$msgsock = socket_accept($sock)) === false) {
       echo
"socket_accept() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\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(socket_last_error($msgsock)) . "\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 === false) {
   echo
"socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
} else {
   echo
"OK.\n";
}

echo
"Attempting to connect to '$address' on port '$service_port'...";
$result = socket_connect($socket, $address, $service_port);
if (
$result === false) {
   echo
"socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\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";
?>



add a noteadd a note User Contributed Notes
Examples
There are no user contributed notes for this page.




<Predefined ConstantsSocket Errors>
Last updated: Thu, 26 Jun 2008
show source | credits | sitemap | contact | advertising | mirror sites
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: http://phpbuilder.com/
Last updated: Tue Nov 1 20:20:59 2005 EST
Columns / Articles | Tips / Quickies | News | News Linking and RSS Feeds | Shared Code Library
Mail Archives | Support / Discussion Forums | Get Started! Links | Contribute! | Docs