Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : Stream Functions : stream_socket_accept

stream_socket_accept

Accept a connection on a socket created by stream_socket_server (PHP 5)
resource stream_socket_accept ( resource server_socket [, float timeout [, string &peername]] )

Accept a connection on a socket previously created by stream_socket_server(). If timeout is specified, the default socket accept timeout will be overridden with the time specified in seconds. The name (address) of the client which connected will be passed back in peername if included and available from the selected transport.

peername can also be determined later using stream_socket_get_name().

If the call fails, it will return FALSE.

Warning:

This function should not be used with UDP server sockets. Instead, use stream_socket_recvfrom() and stream_socket_sendto().

See also stream_socket_server(), stream_socket_get_name(), stream_set_blocking(), stream_set_timeout(), fgets(), fgetss(), fwrite(), fclose(), feof(), and the Curl extension.

Code Examples / Notes » stream_socket_accept

mickael dot bailly

this function, compared to the function socket_accept, got an extra argument "timeout".
To make this function wait indefinitelly to incoming connections, just as in socket_accept, set timeout to -1. It works for me with PHP 5.0.4.


leleu256nospam

This code could be very helpfull...
The following code is for the "server". It listen for a message until CTRL-C
<?php
while (true)
{
// disconnected every 5 seconds...
receive_message('127.0.0.1','85',5);
}
function receive_message($ipServer,$portNumber,$nbSecondsIdle)
{
 // creating the socket...
 $socket = stream_socket_server('tcp://'.$ipServer.':'.$portNumber, $errno, $errstr);
 if (!$socket)
 {
   echo "$errstr ($errno)<br />\n";
 }
 else
  {
   // while there is connection, i'll receive it... if I didn't receive a message within $nbSecondsIdle seconds, the following function will stop.
   while ($conn = @stream_socket_accept($socket,$nbSecondsIdle))
   {
    $message= fread($conn, 1024);
    echo 'I have received that : '.$message;
    fputs ($conn, "OK\n");
    fclose ($conn);
   }
   fclose($socket);
 }
}
?>
The following code is for the "client". It send a message, and read the respons...
<?php
send_message('127.0.0.1','85','Message to send...');
function send_message($ipServer,$portServer,$message)
{
 $fp = stream_socket_client("tcp://$ipServer:$portServer", $errno, $errstr);
 if (!$fp)
 {
    echo "ERREUR : $errno - $errstr<br />\n";
 }
 else
 {
    fwrite($fp,"$message\n");
    $response =  fread($fp, 4);
    if ($response != "OK\n")
       {echo 'The command couldn\'t be executed...\ncause :'.$response;}
    else
       {echo 'Execution successfull...';}
    fclose($fp);
 }
}
?>


Change Language


Follow Navioo On Twitter
stream_bucket_append
stream_bucket_make_writeable
stream_bucket_new
stream_bucket_prepend
stream_context_create
stream_context_get_default
stream_context_get_options
stream_context_set_option
stream_context_set_params
stream_copy_to_stream
stream_encoding
stream_filter_append
stream_filter_prepend
stream_filter_register
stream_filter_remove
stream_get_contents
stream_get_filters
stream_get_line
stream_get_meta_data
stream_get_transports
stream_get_wrappers
stream_register_wrapper
stream_resolve_include_path
stream_select
stream_set_blocking
stream_set_timeout
stream_set_write_buffer
stream_socket_accept
stream_socket_client
stream_socket_enable_crypto
stream_socket_get_name
stream_socket_pair
stream_socket_recvfrom
stream_socket_sendto
stream_socket_server
stream_socket_shutdown
stream_wrapper_register
stream_wrapper_restore
stream_wrapper_unregister
eXTReMe Tracker