What is tcp in php?

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
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_INETSOCK_STREAMSOL_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($sock5) === 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$msgstrlen($msg));

    do {
        if (

false === ($buf socket_read($msgsock2048PHP_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$talkbackstrlen($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.

error_reporting(E_ALL);

echo

"

TCP/IP Connection

\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_INETSOCK_STREAMSOL_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$instrlen($in));
echo 
"OK.\n";

echo

"Reading response:\n\n";
while (
$out socket_read($socket2048)) {
    echo 
$out;
}

echo

"Closing socket...";
socket_close($socket);
echo 
"OK.\n\n";
?>

javier,javiern at gmail dot com

10 years ago

You can easily extend the first example to handle any number of connections instead of jsut one

#!/usr/bin/env php
error_reporting(E_ALL);/* Permitir al script esperar para conexiones. */
set_time_limit(0);/* Activar el volcado de salida implícito, así veremos lo que estamo obteniendo
* mientras llega. */
ob_implicit_flush();$address = '127.0.0.1';
$port = 10000;

if ((

$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
    echo
"socket_create() falló: razón: " . socket_strerror(socket_last_error()) . "\n";
}

if (

socket_bind($sock, $address, $port) === false) {
    echo
"socket_bind() falló: razón: " . socket_strerror(socket_last_error($sock)) . "\n";
}

if (

socket_listen($sock, 5) === false) {
    echo
"socket_listen() falló: razón: " . socket_strerror(socket_last_error($sock)) . "\n";
}
//clients array
$clients = array();

do {

$read = array();
   
$read[] = $sock;$read = array_merge($read,$clients);// Set up a blocking call to socket_select
   
if(socket_select($read,$write = NULL, $except = NULL, $tv_sec = 5) < 1)
    {
       
//    SocketServer::debug("Problem blocking socket_select?");
       
continue;
    }
// Handle new Connections
   
if (in_array($sock, $read)) {       

                if ((

$msgsock = socket_accept($sock)) === false) {
            echo
"socket_accept() falló: razón: " . socket_strerror(socket_last_error($sock)) . "\n";
            break;
        }
       
$clients[] = $msgsock;
       
$key = array_keys($clients, $msgsock);
       
/* Enviar instrucciones. */
       
$msg = "\nBienvenido al Servidor De Prueba de PHP. \n" .
       
"Usted es el cliente numero: {$key[0]}\n" .
       
"Para salir, escriba 'quit'. Para cerrar el servidor escriba 'shutdown'.\n";
       
socket_write($msgsock, $msg, strlen($msg));

            }

// Handle Input
   
foreach ($clients as $key => $client) { // for each client       
       
if (in_array($client, $read)) {
            if (
false === ($buf = socket_read($client, 2048, PHP_NORMAL_READ))) {
                echo
"socket_read() falló: razón: " . socket_strerror(socket_last_error($client)) . "\n";
                break
2;
            }
            if (!
$buf = trim($buf)) {
                continue;
            }
            if (
$buf == 'quit') {
                unset(
$clients[$key]);
               
socket_close($client);
                break;
            }
            if (
$buf == 'shutdown') {
               
socket_close($client);
                break
2;
            }
           
$talkback = "Cliente {$key}: Usted dijo '$buf'.\n";
           
socket_write($client, $talkback, strlen($talkback));
            echo
"$buf\n";
        }

            }       
} while (

true);socket_close($sock);
?>

zital at riseup dot net

5 years ago

due to PHP standars modify the code to:
//...
   
$write = NULL;
   
$except = NULL;
   
$tv_sec = 5;// Set up a blocking call to socket_select
   
if(socket_select($read, $write, $except, $tv_sec) < 1)
//...
?>

What is socket in php?

Socket programming is responsible for establishing that connection between applications to interact. Client application sends message($message) to server($host) and the server application receives it from the client through a port($port). The client. php runs and sends the message from a client machine.

What is TCP and socket?

TCP socket routines enable reliable IP communication using the transmission control protocol (TCP). This section describes the implementation of the Transmission Control Protocol (TCP) in the Network Component. TCP runs on top of the Internet Protocol (IP).

Can we use socket in PHP?

Socket programming can be defined as the programming approach that has the server and the client as the application where a connection has to be established between both of them to facilitate the communication between them. In terms of PHP, it also lets us implement the concept of socket programming.

How do I run a PHP socket server?

PHP SERVER.
Step 1: Set variables such as "host" and "port" PHP. ... .
Step 2: Create Socket. PHP. ... .
Step 3: Bind the socket to port and host. ... .
Step 4: Start listening to the socket. ... .
Step 5: Accept incoming connection. ... .
Step 6: Read the message from the Client socket. ... .
Step 7: Reverse the message. ... .
Step 8: Send message to the client socket..