stream_socket_accept

(PHP 5, PHP 7)

stream_socket_acceptПринимает соединение на сокете, созданном c помощью функции stream_socket_server()

Описание

resource stream_socket_accept ( resource $server_socket [, float $timeout = ini_get("default_socket_timeout") [, string &$peername ]] )

Принимает соединение на сокете, предварительно созданном с помощью функции stream_socket_server().

Список параметров

server_socket

Серверный сокет для принятия соединения.

timeout

Заменяет тайм-аут подключения сокета по умолчанию. Время должно быть указано в секундах.

peername

Будет присвоено имя (адрес) клиента, который подсоединился, если оно содержится и доступно из выбранного транспорта.

Замечание:

Может быть определено позже, используя функцию stream_socket_get_name().

Возвращаемые значения

Возвращает поток принятого соединения с сокетом или FALSE в случае возникновения ошибки.

Примечания

Внимание

Эта функция не должна использоваться с серверными сокетами UDP. Вместо этого используйте stream_socket_recvfrom() и stream_socket_sendto().

Смотрите также

  • stream_socket_server() - Создаёт интернет-сокет или доменный сокет Unix
  • stream_socket_get_name() - Извлекает название локального или удалённого сокета
  • stream_set_blocking() - Устанавливает блокирующий/неблокирующий режим на потоке
  • stream_set_timeout() - Устанавливает значение тайм-аута на потоке
  • fgets() - Читает строку из файла
  • fgetss() - Прочитать строку из файла и отбросить HTML-теги
  • fwrite() - Бинарно-безопасная запись в файл
  • fclose() - Закрывает открытый дескриптор файла
  • feof() - Проверяет, достигнут ли конец файла
  • cURL

Коментарии

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))
    {
     
$messagefread($conn1024);
     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($fp4);
     if (
$response != "OK\n")
        {echo 
'The command couldn\'t be executed...\ncause :'.$response;}
     else
        {echo 
'Execution successfull...';}
     
fclose($fp);
  }
}
?>
2004-11-02 07:58:23
http://php5.kiev.ua/manual/ru/function.stream-socket-accept.html
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.
2006-07-18 06:10:28
http://php5.kiev.ua/manual/ru/function.stream-socket-accept.html
To whom it may concern, and it may concern you greatly, stream_set_blocking has no effect on stream_socket_accept.
If you want it to return right away, connection or not, use 0 for the timeout parameter.
2008-01-02 02:33:51
http://php5.kiev.ua/manual/ru/function.stream-socket-accept.html
To check if there's a new connection waiting, without blocking, or (when using non-blocking mode) without notices), you can use stream_accept (as opposed to socket_select).

<?php

   
class GenericClass {

        protected 
$resSocket=null;

        function 
acceptConnections() {

           
# check that we still have a resource 
           
           
if(is_resource($this->resSocket)) {
           
               
$arrRead=array($this->resSocket);
               
               
$arrWrite=array();
               
               
/** @warning Passing $arrRead,$arrWrite by reference */
               
if(stream_select($arrRead,$arrWrite,$arrWrite,0)) {
           
                   
$resConnection=stream_socket_accept($this->resSocket,0);

                   
# ... other stuff here
               
}
            }
        }
    }
?>
2011-10-10 12:13:36
http://php5.kiev.ua/manual/ru/function.stream-socket-accept.html
Автор:
Note that if you use 0 as timeout, the connection will timeout right away.
2014-12-17 12:37:02
http://php5.kiev.ua/manual/ru/function.stream-socket-accept.html

    Поддержать сайт на родительском проекте КГБ