socket_listen

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

socket_listenПрослушивает входящие соединения на сокете

Описание

socket_listen(Socket $socket, int $backlog = 0): bool

После того, как сокет socket был создан при помощи функции socket_create() и привязан к имени при помощи функции socket_bind(), ему можно указать слушать входящие соединения на сокете socket.

Функция socket_listen() применима только к сокетам типа SOCK_STREAM или SOCK_SEQPACKET.

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

socket

Экземпляр Socket, созданный при помощи функций socket_create() или socket_addrinfo_bind().

backlog

Максимум backlog входящих соединений будет помещено в очередь на обработку. Если запрос на соединение придёт, когда очередь заполнена, клиент может получить ошибку ECONNREFUSED, или, если базовый протокол позволяет повторную передачу, запрос будет повторён.

Замечание:

Максимальное значение параметра backlog очень сильно зависит используемой платформы. В Linux очень большое значение будет молча обрезано до SOMAXCONN. В win32, если передано SOMAXCONN, базовый провайдер сервиса, ответственного за сокет, установит этот параметр максимальным разумным значением. Нет стандартного способа узнать актуальное значение "backlog" для этой платформы.

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

Функция возвращает true в случае успешного выполнения или false, если возникла ошибка. Код ошибки может быть получен при помощи функции socket_last_error(). Этот код может быть передан функции socket_strerror() для получения текстового описания ошибки.

Список изменений

Версия Описание
8.0.0 Теперь параметр socket ожидает экземпляр класса Socket; раньше параметр ожидал ресурс (resource).

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

  • socket_accept() - Принимает соединение на сокете
  • socket_bind() - Привязывает имя к сокету
  • socket_connect() - Начинает соединение с сокетом
  • socket_create() - Создаёт сокет (конечную точку для обмена информацией)
  • socket_strerror() - Возвращает строку, описывающую ошибку сокета
  • socket_addrinfo_bind() - Создаёт и связывает сокет со структурой addrinfo

add a note

User Contributed Notes 1 note

up
-2
renmengyang567 at gmail dot com
5 years ago
<?php
// create for tcp
$sock = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
socket_bind($sock, '127.0.0.1',5000);
socket_listen($sock,1);
sleep(20);
?>

<fruit>
netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 1839/php
To Top